Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Meningkatkan Kinerja MySQL pada Query Run-Once dengan Dataset Besar

Firasat saya adalah bahwa dengan unsigned int dan varchar 40 (terutama varchar!) Anda sekarang memiliki kunci utama BESAR dan itu membuat file indeks Anda terlalu besar untuk muat di RAM apa pun yang Anda miliki untuk Innodb_buffer_pool. Ini akan membuat InnoDB harus bergantung pada disk untuk menukar halaman indeks saat pencarian dan itu BANYAK pencarian disk dan tidak banyak pekerjaan CPU.

Satu hal yang saya lakukan untuk masalah serupa adalah menggunakan sesuatu di antara kunci yang benar-benar alami dan kunci pengganti. Kami akan mengambil 2 bidang yang sebenarnya unik (salah satunya juga varchar) dan di lapisan aplikasi akan membuat hash MD5 lebar tetap dan menggunakan ITU sebagai kuncinya. Ya, itu berarti lebih banyak pekerjaan untuk aplikasi tetapi itu membuat file indeks jauh lebih kecil karena Anda tidak lagi menggunakan bidang panjang arbitrer.

ATAU, Anda bisa saja menggunakan server dengan banyak RAM dan melihat apakah itu membuat indeks muat di memori, tetapi saya selalu ingin menjadikan 'melempar perangkat keras' sebagai pilihan terakhir :)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pengganti fungsi UUID Versi 1 MySQL?

  2. SQL Pilih hanya baris dengan Nilai Maks pada Kolom FILTER oleh Kolom

  3. MySQL:Cara massal SELECT baris dengan banyak pasangan dalam klausa WHERE

  4. Nginx - Mengunduh PHP alih-alih mengeksekusi

  5. Bagaimana cara menampilkan kategori, subkategori, sub-subkategori dalam daftar pilih - php/mysql?