Pertama, mari kita pertimbangkan variabel status tersebut:
Buka tabel : Jumlah tabel yang terbuka.
Opened_tables : Jumlah tabel yang telah dibuka. Jika Opened_tables besar, nilai table_open_cache Anda mungkin terlalu kecil.
Anehnya, jawaban atas pertanyaan Anda ada di dalam pertanyaan itu sendiri.
Dua variabel hanya akan lebih masuk akal jika Anda melemparkan satu variabel status lagi ke dalam campuran: Uptime (atau Uptime_since_flush status untuk rata-rata baru setelah FLUSH STATUS ).
Anda harus membandingkan Open_tables agsinst (Opened_tables / Uptime) . Jika Open_tables naik di atas (Opened_tables / Uptime) , sekarang Anda memiliki alasan untuk khawatir dan harus tetap terbuka untuk hal-hal seperti berikut:
UPDATE 2011-08-31 12:18 EDT
Harap perhatikan mengapa saya juga menyarankan menggunakan Uptime_since_flush_status daripada Uptime untuk mendapatkan perbaikan pola pertumbuhan Opened_tables untuk periode tertentu.
Misalnya, jika Anda menjalankan FLUSH STATUS;
setiap Senin di tengah malam, Anda dapat menghasilkan OpenTableFactor:
SELECT *, (Open_tables * Uptime / Opened_Tables) OpenTableFactor FROM
(SELECT variable_value Uptime FROM information_schema.global_status
WHERE variable_name = 'Uptime_since_flush_status') up,
(SELECT variable_value Open_tables FROM information_schema.global_status
WHERE variable_name = 'Open_tables') opn,
(SELECT IF(variable_value=0,1,variable_value) Opened_tables
FROM information_schema.global_status
WHERE variable_name = 'Opened_tables') opnd;
Faktor tabel terbuka ini sama dengan jumlah yang mewakili jumlah tabel terbuka pada saat tertentu terhadap jumlah rata-rata tabel terbuka selama periode tertentu. Dengan FLUSH HOSTS;
setiap minggu / hari / tuan rumah, rata-rata itu bertentangan dengan minggu / hari / jam.
Berikut adalah contoh dari salah satu klien majikan saya:
mysql> SELECT *, (Open_tables * Uptime / Opened_Tables) OpenTableFactor FROM (SELECT variable_value Uptime FROM information_sc hema.global_status WHERE variable_name = 'Uptime_since_flush_status') up, (SELECT variable_value Open_tables FROM informat ion_schema.global_status WHERE variable_name = 'Open_tables') opn, (SELECT IF(variable_value=0,1,variable_value) Opened_ta bles FROM information_schema.global_status WHERE variable_name = 'Opened_tables') opnd;
+----------+-------------+---------------+-------------------+
| Uptime | Open_tables | Opened_tables | OpenTableFactor |
+----------+-------------+---------------+-------------------+
| 14385123 | 16326 | 30429078 | 7717.996519579068 |
+----------+-------------+---------------+-------------------+
1 row in set (0.00 sec)
Klien ini biasanya memelihara sekitar 7745 OpenTableFactor pada maks. Jika OpenTableFactor turun tiba-tiba (bahkan jika sedikit), itu bisa menunjukkan pola lalu lintas yang lebih rendah, conenctions yang dibatalkan tinggi, dan sebagainya. Jika OpenTableFactor tidak pernah berubah (walaupun sedikit), ini dapat memberi Anda kesempatan untuk mengubah pengaturan ini:
Setelah disesuaikan, OpenTableFactor dapat berubah secara konstan atau mengenai plafon atau dataran tinggi lainnya. Dengan demikian, menggunakan unit yang berbeda dalam variabel status menjadi vital untuk jenis penyetelan ini.
UPDATE 2011-08-31 12:42 EDT
Permintaan SQL yang saya jalankan untuk OpenTableFactor tidak berfungsi untuk MySQL 5.0 dan kembali. Jika Anda menggunakan MySQL Administrator atau MONyog , Anda bisa menyesuaikan grafik menggunakan rumus dalam kueri dan monitor. MONyog mengumpulkan sejarah menggunakan SQLLite untuk grafik historis selanjutnya. Ini dapat dilakukan untuk semua versi MySQL.