Ukuran tabel tumpukan maksimum mysql

Dengan Halloween yang tinggal kenangan, waktunya telah tiba untuk mengalihkan perhatian kita ke musim liburan yang akan datang. Pertama, Thanksgiving, kemudian Black Friday dan Cyber ​​Monday, yang berpuncak pada bonanza belanja Natal/pekan tinju. Bagi pemilik bisnis, kali ini tahun menandai pengambilan keuntungan akhir tahun yang telah lama ditunggu-tunggu. Untuk beberapa DBA, ini membawa ketakutan, gentar, dan bahkan malam tanpa tidur bekerja keras untuk membuat sistem kembali online

Syukurlah, ini tidak perlu terjadi. Dengan sedikit mengutak-atik variabel kinerja MySQL secara proaktif, Anda dapat melindungi server basis data Anda dari serbuan permintaan yang meningkat akibat musim belanja

Kiat #1. Tentukan Jumlah Maksimum Koneksi MySQL

Perkiraan awal yang baik untuk jumlah maksimum koneksi di MySQL adalah satu untuk setiap lima permintaan ke server web Anda. Beberapa dari lima permintaan ke server web Anda adalah untuk sumber daya seperti lembar gaya CSS, gambar, dan skrip. Mungkin sulit untuk mendapatkan rasio permintaan MySQL ke server web yang akurat karena hal-hal seperti caching browser; . Misalnya, file log “access_log” Apache dapat diakses secara manual, atau melalui utilitas seperti Analog atau Webalizer< . .

Setelah Anda mencapai perkiraan yang akurat untuk penggunaan khusus Anda, kalikan rasio itu dengan jumlah maksimum koneksi server web Anda. Misalnya, jika server web Anda dikonfigurasi untuk melayani maksimal 256 klien, dan rasio permintaan MySQL vs. permintaan web adalah 1/8, Anda ingin menyetel jumlah maksimum koneksi database ke 32. Untuk memasukkan margin keamanan, kalikan angka itu dengan dua, untuk mendapatkan angka akhir Anda. Hanya jika Anda memiliki infrastruktur untuk mendukungnya, Anda harus berusaha mencocokkan jumlah maksimum koneksi database dengan batas klien server web Anda. Dalam kebanyakan kasus, Anda sebaiknya tetap mendekati 32

Melihat Koneksi MySQL di Monyog

Di MySQL, jumlah maksimum koneksi bersamaan ke MySQL disimpan dalam variabel max_connections global. Monyog melaporkan variabel max_connections sebagai metrik "Maks yang diizinkan" di grup monitor Koneksi Saat Ini. Itu juga membagi angka itu dengan jumlah koneksi terbuka untuk menghasilkan penggunaan Koneksi sebagai persentase

Ukuran tabel tumpukan maksimum mysql

Ada juga monitor Riwayat Koneksi yang dapat berperan penting dalam menghitung jumlah maksimum koneksi bersamaan yang optimal. Ini termasuk jumlah koneksi yang dicoba, ditolak, dan berhasil. Selain itu, Persentase metrik pencapaian maksimum yang diizinkan ditampilkan sebagai bilah progres yang memungkinkan Anda menilai dengan cepat seberapa dekat dengan jumlah maksimum koneksi bersamaan yang telah dicapai server di masa lalu

Ukuran tabel tumpukan maksimum mysql

Kiat #2. Alokasikan Memori yang Cukup ke Tabel Sementara

Dalam beberapa kasus, server membuat tabel sementara internal saat memproses pernyataan. Tabel temp digunakan untuk operasi internal seperti grup dengan dan berbeda, beberapa kueri ORDER BY, UNION, dan subkueri dalam klausa FROM (tabel turunan). Ini dibuat dalam memori sebagai tabel Memori. Ukuran maksimum untuk tabel sementara di dalam memori ditentukan dari mana saja dari nilai tmp_table_size dan max_heap_table_size yang lebih kecil. Jika ukuran tabel temp melebihi ambang ini, itu akan diubah menjadi tabel InnoDB atau MyISAM di disk. Selain itu, tabel sementara selalu langsung masuk ke disk jika kueri melibatkan kolom BLOB atau TEXT, yang tidak dapat disimpan di tabel Memori

Konversi ini mahal, jadi pertimbangkan untuk menambah ukuran variabel max_heap_table_size dan tmp_table_size untuk membantu mengurangi jumlah tabel sementara yang dibuat di disk. Ingatlah bahwa Anda memerlukan banyak memori karena ukuran tabel sementara dalam memori didasarkan pada "kasus terburuk". Misalnya, tabel memori selalu menggunakan kolom dengan panjang tetap, jadi VARCHAR(255) digunakan untuk kolom char. Hal ini dapat membuat tabel sementara di dalam memori jauh lebih besar dari yang Anda kira – faktanya, berkali-kali lipat lebih besar dari ukuran total tabel yang sedang ditanyakan. Saat meningkatkan ukuran variabel max_heap_table_size dan tmp_table_size, pastikan untuk memantau penggunaan memori server Anda, karena tabel sementara dalam memori dapat meningkatkan risiko mencapai kapasitas memori server

Umumnya 32M hingga 64M adalah nilai yang disarankan untuk memulai baik untuk variabel maupun nada sesuai kebutuhan

Monitor Tabel Sementara di Monyog

Monitor Tabel Sementara adalah salah satu dari banyak monitor Monyog yang telah ditentukan sebelumnya. Ini menyediakan beberapa metrik pada penggunaan tabel sementara termasuk

  • Ukuran maksimum yang diperbolehkan.
    Menampilkan nilai variabel server tmp_table_size, yang menentukan ukuran maksimum tabel sementara yang dibuat di memori. Bersamaan dengan max_heap_table_size, ukuran ini menentukan ukuran maksimum tabel internal yang dapat dibuat di memori. Jika tabel internal lebih besar dari ukuran ini, maka akan disimpan di disk.
  • Ukuran maksimum tabel memori.
    Menampilkan nilai variabel server max_heap_table_size, yang menentukan ukuran maksimum tabel mesin penyimpanan MEMORY yang dibuat secara eksplisit.
  • Total tabel dibuat.
    Menampilkan nilai variabel server created_tmp_tables, yang menentukan jumlah tabel sementara yang dibuat di memori.
  • Dibuat di disk.
    Menampilkan nilai variabel server created_tmp_disk_tables , yang menentukan jumlah tabel sementara yang dibuat pada disk.
    Jika nilai ini tinggi, Anda harus mempertimbangkan untuk meningkatkan nilai tmp_table_size dan max_heap_table_size.
  • Disk. rasio total.
    Nilai terhitung berdasarkan create_tmp_disk_tables dibagi dengan created_tmp_tables.
    Persentase tabel sementara yang dibuat di disk karena tmp_table_size atau max_heap_table_size tidak mencukupi. Monyog menyajikan angka ini sebagai bilah kemajuan dan persentase untuk menentukan dengan cepat berapa banyak disk yang digunakan untuk tabel temp, bukan memori.

Ukuran tabel tumpukan maksimum mysql

Grafik tren tersedia untuk tabel Total yang dibuat, Dibuat di disk, dan Disk. nilai rasio total. Ini memungkinkan kita untuk melihat evolusi mereka dari waktu ke waktu

Ukuran tabel tumpukan maksimum mysql

Kiat #3. Tingkatkan Ukuran Cache Utas

Utas manajer koneksi menangani permintaan koneksi klien pada antarmuka jaringan yang didengarkan server. Utas manajer koneksi mengaitkan setiap koneksi klien dengan utas yang didedikasikan untuknya yang menangani otentikasi dan semua pemrosesan permintaan untuk koneksi itu. Oleh karena itu, ada rasio satu banding satu antara utas dan klien yang saat ini terhubung. Penting untuk memastikan bahwa cache utas cukup besar untuk mengakomodasi semua permintaan yang masuk

MySQL menawarkan sejumlah variabel server yang berkaitan dengan utas koneksi

Ukuran cache thread ditentukan oleh variabel sistem thread_cache_size. Nilai default adalah 0 (tidak ada caching), yang menyebabkan utas diatur untuk setiap koneksi baru dan dibuang saat koneksi berakhir. Jika Anda berharap server Anda menerima ratusan permintaan koneksi per detik, Anda harus menyetel thread_cache_size cukup tinggi sehingga sebagian besar koneksi baru menggunakan utas yang di-cache. Anda dapat mengatur max_connections saat startup server atau saat runtime

Anda juga harus memantau jumlah utas dalam cache (Threads_cached) dan berapa banyak utas yang telah dibuat karena utas tidak dapat diambil dari cache (Threads_created). Mengenai yang terakhir, jika Threads_created terus meningkat lebih dari beberapa utas per menit, pertimbangkan untuk meningkatkan nilai thread_cache_size

Gunakan perintah show status MySQL untuk menampilkan variabel MySQL dan informasi status. Berikut adalah beberapa contoh

SHOW GLOBAL STATUS LIKE '%Threads_connected%';

+-------------------+-------+

| Variable_name     | Value |

+-------------------+-------+

| Threads_connected | 2     |

+-------------------+-------+

SHOW GLOBAL STATUS LIKE '%Threads_running%';

+-----------------+-------+

| Variable_name   | Value |

+-----------------+-------+

| Threads_running | 1     |

+-----------------+-------+

Monitor Cache Benang Monyog

Monyog menyediakan layar untuk memonitor Thread Caching bernama “Threads”. Variabel server terkait thread MySQL dipetakan ke metrik Monyog berikut

  • thread_cache_size. Jumlah utas yang dapat di-cache
  • Utas_cache. Jumlah utas dalam cache
  • Utas_dibuat. Utas dibuat untuk menangani koneksi

Layar Monyog Threads juga menyertakan metrik "Thread cache hit rate". Ini adalah sebagian kecil yang memberikan indikasi tingkat hit cache thread. Jika nilainya rendah, Anda harus mempertimbangkan untuk meningkatkan cache utas. Bilah status menunjukkan nilai ini sebagai persentase;

Setiap metrik ini dapat dikonfigurasi untuk mengirimkan peringatan dan/atau peringatan penting jika nilainya sama atau melebihi nilai yang ditentukan

Ukuran tabel tumpukan maksimum mysql

Variabel Server Relevan Lainnya

Selain metrik di atas, Anda juga harus memantau hal-hal berikut

  1. Ukuran Buffer Pool InnoDB.
    Ukuran kumpulan buffer InnoDB memainkan peran utama dalam database MySQL menggunakan InnoDB. Kumpulan buffer menyimpan data dan indeks. Itu harus diatur sebesar mungkin untuk memastikan bahwa database Anda menggunakan memori dan bukan hard drive untuk operasi baca.
  2. Ukuran Tabel Sementara
  3. MySQL menggunakan max_heap_table_size dan tmp_table_size yang lebih rendah untuk membatasi ukuran tabel sementara di memori. Memiliki nilai yang besar dapat membantu mengurangi jumlah tabel sementara yang dibuat pada disk, tetapi juga meningkatkan risiko mencapai kapasitas memori server karena metrik ini berlaku untuk setiap klien. Umumnya 32M hingga 64M adalah nilai yang disarankan untuk memulai baik untuk variabel maupun nada sesuai kebutuhan

  4. Ukuran Buffer Log InnoDB
  5. Setiap kali MySQL menulis ke file log, MySQL menggunakan sumber daya sistem penting yang dapat digunakan untuk memproses penjualan. Oleh karena itu, masuk akal untuk menyetel ukuran buffer log InnoDB ke nilai yang besar. Dengan begitu, server menulis ke disk lebih jarang selama transaksi besar, sehingga meminimalkan operasi yang memakan waktu tersebut. 64M adalah titik awal yang baik untuk variabel ini

Kesimpulan

Meskipun situs web perusahaan terbesar sekalipun mengalami kerugian karena downtime dari waktu ke waktu, dampaknya sangat penting bagi industri kecil, menengah, dan rumah tangga yang berurusan dengan penjualan online. Menurut sebuah laporan pada survei terbaru, pemadaman listrik selama satu menit menyebabkan kerugian rata-rata sekitar $5.000 bagi perusahaan. Jangan biarkan bisnis Anda menjadi bagian dari statistik itu. Bersikaplah proaktif dalam menyetel server database MySQL Anda sebelum musim liburan dan dapatkan hasilnya.

Berapa ukuran maksimum tabel di MySQL?

Anda menggunakan tabel MyISAM dan ruang yang diperlukan untuk tabel melebihi yang diizinkan oleh ukuran penunjuk internal. MyISAM mengizinkan data dan file indeks untuk tumbuh hingga 256TB secara default, tetapi batas ini dapat diubah hingga ukuran maksimum yang diizinkan 65.536TB (2567 − .

Apa itu max_heap_table_size?

Max_heap_table_size adalah variabel sistem yang memiliki properti baca/tulis . Awalnya max_heap_table_size berukuran 16 MB. Pertama, periksa nilai max_heap_table_size, yang dalam satuan byte.

Bagaimana cara meningkatkan Tmp_table_size di MySQL?

tmp_table_size – Konfigurasi . SET GLOBAL tidak akan bertahan melalui restart server. Ganti XX dengan nilai yang sesuai dengan kebutuhan database Anda. Harus me-restart server MySQL untuk melihat perubahan yang diterapkan. Make a new connection to the server and the values will update. SET GLOBAL will not persist through a server restart. Replace XX with value to suit your database needs. Must restart MySQL server to see changes applied.

Bagaimana cara memeriksa ukuran tabel di MySQL?

Hal ini dapat diselesaikan dengan mudah dengan kueri berikut. PILIH TABLE_SCHEMA SEBAGAI `Database`, TABLE_NAME SEBAGAI `Table`, ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024/1024) SEBAGAI `Size (MB)` DARI information_schema.