Kami telah mengalami masalah di mana kueri tabel yang memiliki sekitar 50 juta baris, dan memiliki ukuran indeks 4 GB (ukuran tabel sekitar 6 GB) menghasilkan server database bertukar memori, dan melambat secara dramatis. Saya cukup yakin ini ada hubungannya dengan ukuran tabel temp yang terlampaui, dan itu ditukar ke disk.
Jika saya memutakhirkan server database saya dari 32 GB RAM menjadi 64 GB RAM, saya bertanya-tanya apakah database MySQL akan dapat sepenuhnya memanfaatkan memori tambahan ini dan tidak bertukar. Saya telah melalui beberapa variabel (misalnya KEY_BUFFER_SIZE, dll ...), dan mereka tampaknya mendukung nilai pengaturan lebih dari 64 GB. Namun, dokumentasi MySQL mengatakan bahwa tmp_table_size maksimal sebesar 4 GB.
Jadi, apakah peningkatan memori akan sia-sia? Apakah masalah "kueri-tabel-besar" akan mendapat manfaat dari ini, atau apakah itu tidak membantu karena batas 4 GB? Saya tahu ada potensi solusi lain seperti merestrukturisasi tabel untuk dipartisi dengan cara yang berbeda, dll ... tetapi tanpa mengubah apa pun tentang tabel, akankah memori tambahan membantu?
Selain itu, secara umum, apakah ada variabel terkait memori lain yang tidak dapat dimanfaatkan MySQL saat beralih dari 32 ke 64 GB RAM?
Kami menggunakan linux 64bit (Ubuntu) sebagai server basis data kami.
Terima kasih, Galen
Mungkin akan lebih baik jika meluangkan waktu dan usaha ekstra untuk meneliti apa yang menyebabkan sistem bertukar sebelum menghabiskan uang untuk memori?
Memori 32GB menyisakan banyak memori yang tersedia bahkan setelah memuat seluruh tabel, indeks, dan temp_table maksimum ke dalam memori. Pencarian cepat memunculkan dua lembar dokumentasi ini yang mungkin relevan:
sumber
Jika Anda pikir itu karena tabel temp yang sangat besar sedang dibuat, Anda mungkin ingin mempertimbangkan cara-cara Anda dapat meningkatkan kueri untuk menghindari tabel sementara.
Anda dapat memposting di Stackoverflow pos yang berisi skema, kueri, rencana jelaskan dan beberapa detail untuk masalah tersebut.
sumber