Optimalkan konfigurasi MySQL untuk satu pengguna dengan pertanyaan kompleks

Saya ingin mengoptimalkan MySQL untuk pengguna tunggal (saya). Tidak ada orang lain yang terhubung ke database. MySQL diinstal secara lokal di PC saya. Datanya mencakup sekitar 70 tabel dengan total data sebesar 150 GB. Datanya statis, jadi saya tidak akan mengubahnya (tidak ada UPDATE atau DELETE). Saya ingin menganalisis data, jadi saya akan menjalankan kueri besar dan kompleks termasuk SELECT dan JOIN pada sebagian besar data.

Mesin:

  • Windows 7 64-bit
  • Intel Core i7-4800MQ @ 2,70GHz
  • RAM 32GB
  • 2x SSD 512 GB
  • MySQL 5.7, INNODB

Apa yang saya lakukan sejauh ini:

  • HyperThreading dinonaktifkan (MySQL hanya menggunakan satu Core virtual per
    kueri - penggunaan CPU 12,5% --> 25%)
  • Deklarasikan kunci utama dan
  • Mengindeks semua kunci asing
  • innodb_buffer_pool_size = 25G
  • koneksi_maks=10
  • Penggunaan InnoDB

Jadi, apa yang dapat saya lakukan untuk mengoptimalkan konfigurasi (bukan kueri itu sendiri) untuk kueri pengguna tunggal?

  • mesin basis data?
  • konfigurasi umum?
  • lebih baik menyimpan semua informasi gabungan?

Catatan: Pada konfigurasi saat ini, penggunaan CPU menjadi penghambat karena berada pada 25% saat saya menjalankan kueri yang kompleks. Sebagai pengujian saya mencoba beberapa pertanyaan besar (mengambil banyak data). Kalau saya percaya waktu MYSQL Workbench durasinya hanya 4 detik, tapi setelah 10 jam berjalan tidak bisa menyelesaikan pengambilan data...

Terima kasih banyak!


person Uli    schedule 12.02.2017    source sumber
comment
mengindeks semua primer. . . kunci. Kedengarannya tidak benar. Kunci primer secara otomatis mendapatkan indeksnya sendiri, cukup dengan mendeklarasikannya.   -  person Gordon Linoff    schedule 12.02.2017
comment
@GordonLinoff : Ya, Anda benar, itulah yang saya maksud. Maaf karena tidak tepat. Aku akan mengubahnya.   -  person Uli    schedule 12.02.2017


Jawaban (1)


Anda dapat mencoba MySiam. Ini sangat baik untuk tabel yang intensif membaca (pilih). Dan Anda harus memilih key_buffer_size yang besar. Tapi saya tidak yakin dengan kinerja GABUNG... Cobalah

person Olaf_SQL    schedule 12.02.2017
comment
Hmm, saya mengonversi semuanya ke ENGINE=MyISAM dan melakukan beberapa tes. Saya punya pertanyaan SELECT dengan 8 GABUNG. Dengan INNODB dibutuhkan waktu sekitar 20 menit dan dengan MyISAM 6 kali lebih lama. Jadi ini mungkin bukan solusi. Apakah saya melakukan sesuatu yang salah? - person Uli; 13.02.2017