ก่อนอื่นมาพิจารณาตัวแปรสถานะเหล่านั้น:
Open tables : จำนวนของตารางที่เปิด
Opened_tables : จำนวนตารางที่ถูกเปิด หาก Opened_tables มีขนาดใหญ่ค่า table_open_cache ของคุณอาจเล็กเกินไป
น่าแปลกที่คำตอบสำหรับคำถามของคุณอยู่ในคำถามนั้น
ตัวแปรสองตัวนั้นเหมาะสมกว่าหากคุณเพิ่มตัวแปรสถานะอีกหนึ่งตัวแปรลงในส่วนผสม: สถานะuptime (หรือสถานะ Uptime_since_flushสำหรับค่าเฉลี่ยใหม่หลังจากสถานะล้าง )
คุณควรจะเปรียบเทียบ Open_tables agsinst (opened_tables / Uptime) หาก Open_tables ปีนขึ้นไปด้านบน(Opened_tables / Uptime)ตอนนี้คุณมีข้อกังวลและควรจับตามองสิ่งต่าง ๆ ดังต่อไปนี้:
อัพเดท 2011-08-31 12:18 EDT
โปรดทราบว่าทำไมฉันถึงแนะนำให้ใช้Uptime_since_flush_statusแทนUptimeเพื่อรับรูปแบบการเติบโต Opened_tables สำหรับช่วงเวลาที่กำหนด
ตัวอย่างเช่นหากคุณรันFLUSH STATUS;
ทุกวันจันทร์ตอนเที่ยงคืนคุณสามารถสร้าง 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;
ปัจจัยตารางที่เปิดนี้มีจำนวนเท่ากับจำนวนที่แสดงถึงจำนวนของตารางที่เปิดในช่วงเวลาใดก็ตามเทียบกับจำนวนเฉลี่ยของตารางที่เปิดอยู่ตลอดระยะเวลาที่กำหนด ด้วยFLUSH HOSTS;
ทุกสัปดาห์ / วัน / โฮสต์ค่าเฉลี่ยนั้นเทียบกับสัปดาห์ / วัน / ชั่วโมง
นี่คือตัวอย่างจากลูกค้าของนายจ้างของฉัน:
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)
โดยทั่วไปแล้วไคลเอนต์นี้จะรักษาประมาณ 7745 OpenTableFactor ที่สูงสุด หาก OpenTableFactor ลดลงอย่างกระทันหัน (แม้ว่าจะมีเพียงเล็กน้อย) ก็อาจบ่งบอกถึงรูปแบบการรับส่งข้อมูลที่ต่ำกว่า conenctions ที่ยกเลิกสูงและอื่น ๆ หาก OpenTableFactor ไม่เคยเปลี่ยนแปลง (แม้ว่าจะมีเพียงเล็กน้อย) ก็สามารถนำเสนอโอกาสให้คุณเปลี่ยนการตั้งค่าเหล่านี้:
เมื่อปรับแล้ว OpenTableFactor อาจเปลี่ยนแปลงตลอดเวลาหรือกระทบเพดานหรือที่ราบสูงอื่น ดังนั้นการใช้หน่วยต่าง ๆ ภายในตัวแปรสถานะจึงมีความสำคัญสำหรับการปรับค่านี้
อัพเดท 2011-08-31 12:42 EDT
แบบสอบถาม SQL ที่ฉันใช้สำหรับ OpenTableFactor ไม่สามารถใช้งานกับ MySQL 5.0 และย้อนกลับได้ หากคุณใช้ผู้ดูแลระบบ MySQLหรือMONyogคุณสามารถปรับแต่งกราฟโดยใช้สูตรในแบบสอบถามและตรวจสอบ MONyog รวบรวมประวัติโดยใช้ SQLLite สำหรับการทำกราฟประวัติในภายหลัง สามารถทำได้สำหรับ MySQL ทุกรุ่น