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

Menghitung Ukuran Pool Buffer InnoDB untuk Server MySQL Anda

Apa itu Buffer Pool InnoDB?

Kolam buffer InnoDB adalah ruang memori yang menampung banyak struktur data dalam memori InnoDB, buffer, cache, indeks, dan bahkan data baris. innodb_buffer_pool_size adalah parameter konfigurasi MySQL yang menentukan jumlah memori yang dialokasikan ke kumpulan buffer InnoDB oleh MySQL. Ini adalah salah satu pengaturan terpenting dalam konfigurasi hosting MySQL dan harus dikonfigurasi berdasarkan RAM sistem yang tersedia.

Dalam posting ini, kami akan memandu Anda melalui dua pendekatan untuk menyetel nilai ukuran kumpulan buffer InnoDB Anda, memeriksa pro dan kontra dari praktik tersebut, dan juga mengusulkan metode unik untuk mencapai nilai optimal berdasarkan ukuran RAM sistem Anda.

Pendekatan 1. Metode Aturan Praktis

Praktik yang paling umum diikuti adalah menyetel nilai ini pada 70% – 80% dari RAM sistem. Meskipun bekerja dengan baik dalam banyak kasus, metode ini mungkin tidak optimal di semua konfigurasi. Mari kita ambil contoh sistem dengan RAM 192GB. Berdasarkan metode di atas, kami mendapatkan sekitar 150GB untuk ukuran kumpulan buffer. Namun, ini bukan angka yang optimal karena tidak sepenuhnya memanfaatkan ukuran RAM besar yang tersedia di sistem, dan menyisakan sekitar 40GB memori. Perbedaan ini dapat menjadi lebih signifikan saat kita beralih ke sistem dengan konfigurasi yang lebih besar di mana kita harus memanfaatkan RAM yang tersedia secara lebih luas.

Pendekatan 2. Pendekatan yang Lebih Nuansa

Pendekatan ini didasarkan pada pemahaman yang lebih mendetail tentang internal kumpulan buffer InnoDB dan interaksinya, yang dijelaskan dengan sangat baik dalam buku High Performance MySQL.

Mari kita lihat metode berikut untuk menghitung ukuran kumpulan buffer InnoDB.

  1. Mulai dengan total RAM yang tersedia.
  2. Kurangi jumlah yang sesuai untuk kebutuhan OS.
  3. Kurangi jumlah yang sesuai untuk semua kebutuhan MySQL (seperti berbagai buffer MySQL, tabel sementara, kumpulan koneksi, dan buffer terkait replikasi).
  4. Bagi hasilnya dengan 105%, yang merupakan perkiraan overhead yang diperlukan untuk mengelola kumpulan buffer itu sendiri.

Misalnya, mari kita lihat sistem dengan RAM 192GB hanya menggunakan InnoDB dan memiliki ukuran file log total sekitar 4GB. Kita dapat menggunakan aturan seperti 'maksimum 2GB atau 5% dari total RAM' untuk alokasi kebutuhan OS seperti yang direkomendasikan dalam buku di atas, yaitu sekitar 9,6GB. Kemudian, kami juga akan mengalokasikan sekitar 4GB untuk kebutuhan MySQL lainnya, terutama dengan mempertimbangkan ukuran file log. Metode ini menghasilkan sekitar 170GB untuk ukuran kumpulan buffer InnoDB kami, yaitu sekitar 88,5% pemanfaatan ukuran RAM yang tersedia.

Meskipun kami menggunakan aturan 'maksimum 2GB atau 5% dari total RAM' untuk menghitung alokasi memori kami untuk kebutuhan OS di atas, aturan yang sama tidak bekerja dengan baik dalam semua kasus , khusus untuk sistem dengan RAM berukuran sedang antara 2 GB dan 32 GB. Misalnya, dalam sistem dengan RAM 3 GB, mengalokasikan 2 GB untuk kebutuhan OS tidak banyak meninggalkan kumpulan buffer InnoDB, sementara mengalokasikan 5% RAM terlalu sedikit untuk kebutuhan OS kita.

Jadi, mari kita sempurnakan aturan alokasi OS di atas dan periksa metode komputasi InnoDB di berbagai konfigurasi RAM:

Untuk Sistem dengan RAM Berukuran Kecil (<=1GB)

Untuk sistem yang berjalan dengan RAM kurang dari 1GB, lebih baik menggunakan nilai konfigurasi default MySQL 128MB untuk ukuran kumpulan buffer InnoDB.

Untuk Sistem dengan RAM Ukuran Sedang (1GB – 32GB)

Mengingat kasus sistem dengan ukuran RAM 1GB – 32GB, kita dapat menghitung kebutuhan OS menggunakan heuristik kasar ini:

256MB + 256 * log2(ukuran RAM dalam GB)

Rasionalisasi di sini adalah, untuk konfigurasi RAM rendah, kita mulai dengan nilai dasar 256MB untuk kebutuhan OS dan meningkatkan alokasi ini dalam skala logaritmik sebagai jumlah RAM meningkat. Dengan cara ini, kita dapat menemukan formula deterministik untuk mengalokasikan RAM untuk kebutuhan OS kita. Kami juga akan mengalokasikan jumlah memori yang sama untuk kebutuhan MySQL kami yang lain. Misalnya, dalam sistem dengan RAM 3 GB, kami akan membuat alokasi yang adil sebesar 660 MB untuk kebutuhan OS, dan 660 MB lainnya untuk kebutuhan MySQL lainnya, sehingga menghasilkan nilai sekitar 1,6 GB untuk ukuran kumpulan buffer InnoDB kami.

Untuk Sistem dengan RAM Berukuran Lebih Tinggi (> 32GB)

Untuk sistem dengan ukuran RAM lebih besar dari 32GB, kami akan kembali menghitung kebutuhan OS sebagai 5% dari ukuran RAM sistem kami, dan jumlah yang sama untuk MySQL kebutuhan lainnya. Jadi, untuk sistem dengan ukuran RAM 192GB, metode kami akan mencapai sekitar 165GB untuk ukuran kumpulan buffer InnoDB, yang sekali lagi merupakan nilai optimal untuk digunakan.

Kalkulator Ukuran Kolam Buffer InnoDB

Hitung nilai optimal untuk berbagai ukuran RAM:





InnoDB Buffer Pool Size Calculator - Hitung angka optimal untuk ukuran RAM sistem apapunKlik Untuk Tweet

Plot Ukuran Pool Buffer InnoDB untuk Berbagai Ukuran RAM

Perhatian untuk Perhitungan Ukuran Pool Buffer InnoDB

Pertimbangan dalam posting blog ini adalah untuk sistem Linux yang didedikasikan untuk MySQL. Untuk sistem Windows atau sistem yang menjalankan beberapa aplikasi bersama dengan MySQL, pengamatan ini mungkin tidak akurat. Penting juga untuk dicatat bahwa, meskipun kami dapat menggunakan alat ini sebagai referensi, itu benar-benar membutuhkan pengalaman yang baik, eksperimen, pemantauan berkelanjutan, dan penyesuaian untuk mendapatkan ukuran yang tepat untuk ukuran innodb_buffer_pool_size Anda.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kelola MySQL dengan phpMyAdmin di Ubuntu 10.10 (Maverick)

  2. MySQL JATUHKAN KENDALA UNIK

  3. Cara Mengimpor File CSV ke Tabel MySQL

  4. Bagaimana cara mengubah hasil SQL Query ke Struktur Data PANDAS?

  5. Hitung dengan kondisi JIKA dalam permintaan MySQL