Penggunaan memori maksimum MySQL sangat bergantung pada perangkat keras, pengaturan Anda, dan database itu sendiri.
Perangkat keras
Perangkat keras adalah bagian yang jelas. Semakin banyak RAM semakin baik, disk lebih cepat ftw . Namun, jangan percaya surat berita bulanan atau mingguan itu. MySQL tidak berskala linier - bahkan pada perangkat keras Oracle. Ini sedikit lebih rumit dari itu.
Intinya adalah: tidak ada aturan umum tentang apa yang direkomendasikan untuk pengaturan MySQL Anda . Itu semua tergantung pada penggunaan saat ini atau proyeksi.
Pengaturan & database
MySQL menawarkan variabel dan sakelar yang tak terhitung jumlahnya untuk mengoptimalkan perilakunya. Jika Anda mengalami masalah, Anda benar-benar perlu duduk dan membaca manual (f'ing).
Adapun database - beberapa kendala penting:
- mesin meja (
InnoDB
, MyISAM
, ...)
- ukuran
- indeks
- pemakaian
Kebanyakan tips MySQL tentang stackoverflow akan memberi tahu Anda tentang 5-8 yang disebut pengaturan penting. Pertama, tidak semuanya penting - misalnya mengalokasikan banyak sumber daya ke InnoDB dan tidak menggunakan InnoDB tidak masuk akal karena sumber daya tersebut terbuang percuma.
Atau - banyak orang menyarankan untuk menaikkan max_connection
variabel - yah, sedikit yang mereka ketahui itu juga menyiratkan bahwa MySQL akan mengalokasikan lebih banyak sumber daya untuk memenuhi itu max_connections
- jika diperlukan. Solusi yang lebih jelas mungkin menutup koneksi database di DBAL Anda atau menurunkan wait_timeout
untuk membebaskan utas tersebut.
Jika Anda memahami maksud saya - benar-benar ada banyak, banyak hal untuk dibaca dan dipelajari.
Mesin
Mesin tabel adalah keputusan yang cukup penting, banyak orang melupakannya sejak awal dan kemudian tiba-tiba menemukan diri mereka berkelahi dengan MyISAM
meja berukuran 30 GB yang mengunci dan memblokir seluruh aplikasi mereka.
Saya tidak bermaksud mengatakan MyISAM menyebalkan , tetapi InnoDB
dapat diubah untuk merespons hampir atau hampir secepat MyISAM
dan menawarkan hal seperti penguncian baris UPDATE
sementara MyISAM
mengunci seluruh tabel saat ditulis.
Jika Anda bebas menjalankan MySQL di infrastruktur Anda sendiri, Anda mungkin juga ingin memeriksa server percona karena di antara termasuk banyak kontribusi dari perusahaan seperti Facebook dan Google (mereka tahu dengan cepat), itu juga termasuk drop- sebagai pengganti InnoDB
, dipanggil XtraDB
.
Lihat inti saya untuk pengaturan percona-server (dan -client) (di Ubuntu): http://gist.github.com/637669
Ukuran
Ukuran database sangat, sangat penting - percaya atau tidak, kebanyakan orang di Intarwebs tidak pernah menangani pengaturan MySQL yang besar dan menulis secara intens tetapi itu benar-benar ada. Beberapa orang akan mengolok-olok dan mengatakan sesuatu seperti, "Gunakan PostgreSQL !!! 111", tapi mari kita abaikan mereka untuk saat ini.
Intinya adalah: dilihat dari ukuran, keputusan tentang perangkat keras harus dibuat. Anda tidak dapat benar-benar membuat database 80 GB berjalan cepat pada RAM 1 GB.
Indeks
Bukan: semakin banyak, semakin meriah. Hanya indeks yang diperlukan yang harus ditetapkan dan penggunaan harus diperiksa EXPLAIN
. Tambahkan ke bahwa MySQL EXPLAIN
sangat terbatas, tetapi ini adalah permulaan.
Konfigurasi yang disarankan
Tentang ini my-large.cnf
dan my-medium.cnf
file - saya bahkan tidak tahu untuk siapa itu ditulis. Gulung milik Anda sendiri.
Tuning primer
Awal yang baik adalah tuning primer . Ini script bash (petunjuk: Anda harus linux) yang mengambil output dari SHOW VARIABLES
dan SHOW STATUS
dan membungkus menjadi rekomendasi semoga bermanfaat. Jika server Anda sudah berjalan lama, rekomendasinya akan lebih baik karena akan ada data untuk dijadikan dasar.
Primer tuning bukanlah saus ajaib. Anda tetap harus membaca semua variabel yang disarankan untuk diubah.
Bacaan
Saya sangat merekomendasikan mysqlperformanceblog . Ini adalah sumber yang bagus untuk semua jenis tip terkait MySQL. Dan bukan hanya MySQL, mereka juga tahu banyak tentang perangkat keras yang tepat atau merekomendasikan penyiapan untuk AWS, dll. Orang-orang ini memiliki pengalaman bertahun-tahun.
Sumber daya hebat lainnya adalah planet-mysql , tentu saja.