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

Penggunaan memori maksimum MySQL

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kutipan Tunggal, Kutipan Ganda, dan Backticks di Query MySQL

  2. MySQL MariaDB – Kueri Menggunakan Tabel Temp

  3. Gunakan Database Relasional MySQL di Ubuntu 10.04 LTS (Lucid)

  4. Baris mana yang dikembalikan saat menggunakan LIMIT dengan OFFSET di MySQL?

  5. konversi tanggal php ke format mysql