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, semakin cepat disk ftw . Jangan percaya surat berita bulanan atau mingguan itu. MySQL tidak menskalakan linier - bahkan pada perangkat keras Oracle. Ini sedikit lebih rumit dari itu.
Intinya adalah:tidak ada aturan umum untuk apa yang direkomendasikan untuk Anda pengaturan MySQL. Itu semua tergantung pada penggunaan saat ini atau proyeksi.
Setelan &basis data
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).
Untuk database -- beberapa batasan penting:
- mesin tabel (
InnoDB
,MyISAM
, ...) - ukuran
- indeks
- penggunaan
Sebagian besar tips MySQL tentang stackoverflow akan memberi tahu Anda tentang 5-8 yang disebut pengaturan penting. Pertama, tidak semuanya penting - mis. 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 tahu itu juga menyiratkan bahwa MySQL akan mengalokasikan lebih banyak sumber daya untuk memenuhi max_connections
tersebut -- jika diperlukan. Solusi yang lebih jelas mungkin dengan menutup koneksi database di DBAL Anda atau menurunkan wait_timeout
untuk membebaskan utas tersebut.
Jika Anda mengerti maksud saya -- ada 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 berjuang dengan MyISAM
berukuran 30 GB tabel yang mengunci dan memblokir seluruh aplikasi mereka.
Saya tidak bermaksud mengatakan MyISAM menyebalkan , tetapi InnoDB
dapat diubah untuk merespon hampir atau hampir secepat MyISAM
dan menawarkan hal seperti penguncian baris pada UPDATE
sedangkan MyISAM
mengunci seluruh tabel saat ditulis.
Jika Anda bebas menjalankan MySQL pada infrastruktur Anda sendiri, Anda mungkin juga ingin melihat server percona
karena termasuk banyak kontribusi dari perusahaan seperti Facebook dan Google (mereka tahu dengan cepat), itu juga termasuk pengganti drop-in Percona sendiri untuk InnoDB
, disebut XtraDB
.
Lihat Intisari saya untuk pengaturan percona-server (dan -klien) (di Ubuntu):http://Gist.github .com/637669
Ukuran
Ukuran basis data sangat, sangat penting -- percaya atau tidak, kebanyakan orang di Intarwebs tidak pernah menangani penyiapan MySQL yang besar dan intens, tetapi itu benar-benar ada. Beberapa orang akan mengejek dan mengatakan sesuatu seperti, "Gunakan PostgreSQL!!!111", tapi mari kita abaikan mereka untuk saat ini.
Intinya adalah:dilihat dari ukurannya, keputusan tentang perangkat keras harus dibuat. Anda tidak dapat benar-benar membuat database 80 GB berjalan cepat dengan RAM 1 GB.
Indeks
Bukan:semakin banyak, semakin meriah. Hanya indeks yang diperlukan yang harus disetel dan penggunaan harus diperiksa dengan EXPLAIN
. Tambahkan ke EXPLAIN
MySQL itu sangat terbatas, tetapi ini adalah permulaan.
Konfigurasi yang disarankan
Tentang my-large.cnf
ini dan my-medium.cnf
file -- Saya bahkan tidak tahu untuk siapa itu ditulis. Gulung sendiri.
Penyetelan primer
Awal yang baik adalah primer penyetelan
. Ini adalah skrip bash (petunjuk:Anda memerlukan linux) yang mengambil output dari SHOW VARIABLES
dan SHOW STATUS
dan membungkusnya menjadi rekomendasi yang mudah-mudahan bermanfaat. Jika server Anda telah berjalan beberapa waktu, rekomendasi akan lebih baik karena akan ada data untuk mendasarinya.
Tuning primer bukanlah saus ajaib. Anda tetap harus membaca semua variabel yang disarankan untuk diubah.
Membaca
Saya sangat suka merekomendasikan mysqlperformanceblog . Ini adalah sumber yang bagus untuk semua jenis tips 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.