Pertanyaan Mengurangi penggunaan memori MySQL pada kotak pengembangan


Di mac saya, setelah restart baru dengan koneksi nol, MySQL saat ini menggunakan 40MB memori, 188MB virtual memory (on-disk database paged in?), Dan memiliki 16 thread.

Karena hanya ada satu orang yang mengakses server (saya), dan saya tidak sering memukulnya sepanjang hari, bagaimana cara mengkonfigurasi MySQL untuk mengkonsumsi lebih sedikit memori saat tidak digunakan?

Saya tidak keberatan menghabiskan sumber daya sebanyak yang dibutuhkan untuk menyelesaikan pertanyaan saat mereka mengeksekusi, tetapi ingin menurunkan jejak di antara sesi pengembangan. Karena cara kerja situs web saya berfungsi, itu hanya akan menjalankan satu kueri dalam satu waktu, mungkin dua pertanyaan bersamaan sangat jarang.

Saya menjalankan MySQL di Mac OS X Server 10.7, menggunakan unduhan resmi Oracle, tanpa perubahan konfigurasi.

40MB biasanya baik-baik saja, tetapi belakangan ini saya telah melakukan beberapa pekerjaan pengembangan non-MySQL yang benar-benar membutuhkan setiap inci memori yang dimiliki sistem saya, dan saya lebih suka tidak memulai / menghentikan MySQL beberapa kali setiap hari.


3
2018-01-15 17:40


asal


Karena sebagian besar database mencoba untuk membaca sebanyak mungkin data mereka ke dalam memori untuk membuatnya lebih cepat, Anda bertempur kalah. Roland memiliki beberapa ide bagus, tetapi jika Anda ingin mendaur ulang proses mysqld, mengapa tidak memasukkannya ke dalam tugas cron? Juga, RAM sangat murah sekarang.
Tentunya MySQL tidak perlu mengkonsumsi memori ketika tidak aktif? Tidak mungkin ada cache yang diisi - angka-angka tersebut adalah apa yang digunakan setelah memulai dengan nol pertanyaan yang pernah dijalankan. RAM murah tetapi saya hanya memiliki banyak slot, salah satu proyek saya saat ini melibatkan pemrosesan puluhan gigabyte data. Saya tahu beberapa perusahaan vps telah merekomendasikan konfigurasi untuk server memori rendah, saya mencari sesuatu yang serupa. - Abhi Beckert


Jawaban:


Itu tergantung pada apa yang digunakan oleh mesin penyimpanan yang digunakan oleh tabel Anda.

Jika semua yang Anda gunakan adalah MyISAM, benar-benar dapat menonaktifkan InnoDB sebagai berikut:

Langkah 01) Tambahkan opsi ini ke my.cnf

[mysqld]
skip-innodb
query-cache-type=0

Langkah 02) restart mysql

Dengan melakukan dua langkah ini

  • mysqld mulai lebih cepat
  • default InnoDB Buffer Pool (innodb_buffer_pool_size) tidak dibuat
    • 8M default sebelum MySQL 5.5
    • 128M default dimulai dengan MySQL 5.5
  • Dengan query_cache_type = 0, cache query dinonaktifkan

3
2018-01-15 22:43



Kami memiliki beberapa ribu klien, saya harus dapat memuat situs web mereka ke server pengembangan saya kapan saja. Banyak yang menggunakan InnoDB. Apakah mungkin mengatur ukuran kolam menjadi lebih kecil? - Abhi Beckert
MySQL diperlukan untuk melakukannya. Atur innodb_buffer_pool_size menjadi 4M di my.cnf - RolandoMySQLDBA
Maaf kesalahan besar: diperlukan restart MySQL untuk melakukannya. Atur innodb_buffer_pool_size menjadi 4M di my.cnf - RolandoMySQLDBA