innotop - ออนไลน์ในคลาวด์

นี่คือคำสั่ง innotop ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

โครงการ:

ชื่อ


innotop - การตรวจสอบธุรกรรม / สถานะ MySQL และ InnoDB

เรื่องย่อ


ในการตรวจสอบเซิร์ฟเวอร์ตามปกติ:

อินโนท็อป

ในการตรวจสอบข้อมูลสถานะ InnoDB จากไฟล์:

innotop /var/log/mysql/mysqld.err

ในการรัน innotop แบบไม่โต้ตอบในการกำหนดค่าไปป์และตัวกรอง:

innotop --นับ 5 -d 1 -n

ในการตรวจสอบฐานข้อมูลบนระบบอื่นโดยใช้ชื่อผู้ใช้และรหัสผ่านเฉพาะ:

innotop -u -p -ชม

DESCRIPTION


innotop ตรวจสอบเซิร์ฟเวอร์ MySQL แต่ละโหมดจะแสดงให้คุณเห็นถึงแง่มุมที่แตกต่างกันของสิ่งที่
ที่เกิดขึ้นในเซิร์ฟเวอร์ ตัวอย่างเช่น มีโหมดสำหรับตรวจสอบการจำลองแบบหนึ่งโหมดสำหรับ
แบบสอบถามและอีกอันสำหรับการทำธุรกรรม innotop จะรีเฟรชข้อมูลเป็นระยะ ดังนั้นคุณจะเห็น an
กำลังอัปเดตมุมมอง

innotop มีคุณสมบัติมากมายสำหรับผู้ใช้ระดับสูง แต่คุณสามารถเริ่มต้นและรันมันได้แบบเสมือนจริง
ไม่มีการกำหนดค่า หากคุณเพิ่งเริ่มต้น โปรดดู "QUICK-START" กด '?' เลย
เวลาขณะเรียกใช้ innotop เพื่อขอความช่วยเหลือตามบริบท

เริ่มต้นอย่างรวดเร็ว


ในการเริ่ม innotop ให้เปิดเทอร์มินัลหรือพรอมต์คำสั่ง หากคุณได้ติดตั้ง innotop บน
ระบบของคุณ คุณควรพิมพ์ "innotop" แล้วกด Enter มิฉะนั้นคุณ
จะต้องเปลี่ยนเป็นไดเร็กทอรีของ innotop และพิมพ์ "perl innotop"

เมื่อไม่ได้ระบุตัวเลือกใด innotop จะพยายามเชื่อมต่อกับเซิร์ฟเวอร์ MySQL บน localhost
ใช้ mysql_read_default_group=client สำหรับพารามิเตอร์การเชื่อมต่ออื่น ๆ หากคุณต้องการ
ระบุชื่อผู้ใช้และรหัสผ่านอื่น ใช้ตัวเลือก -u และ -p ตามลำดับ ถึง
ตรวจสอบฐานข้อมูล MySQL บนโฮสต์อื่น ใช้ตัวเลือก -h

หลังจากที่คุณเชื่อมต่อแล้ว innotop ควรแสดงสิ่งต่อไปนี้ให้คุณเห็น:

[RO] รายการสืบค้น (เพื่อขอความช่วยเหลือ) localhost, 01:11:19, 449.44 QPS, 14/7/163 con/run

CXN เมื่อโหลด QPS ช้า QCacheHit KCacheHit BpsIn BpsOut
localhost รวม 0.00 1.07k 697 0.00% 98.17% 476.83k 242.83k

CXN Cmd ID โฮสต์ผู้ใช้ DB Time Query
localhost Query 766446598 ทดสอบ 10.0.0.1 foo 00:02 INSERT INTO ตาราง (

(ตัวอย่างนี้ถูกตัดออกทางด้านขวาเพื่อให้พอดีกับเทอร์มินัลเมื่อเรียกใช้ 'man
อินโนท็อป')

หากเซิร์ฟเวอร์ของคุณไม่ว่าง คุณจะเห็นผลลัพธ์เพิ่มเติม สังเกตบรรทัดแรกบนหน้าจอ
ซึ่งบอกคุณว่าตั้งค่าอ่านอย่างเดียวเป็นจริง ([RO]) คุณอยู่ในโหมดใดและเซิร์ฟเวอร์ใด
คุณกำลังเชื่อมต่อกับ คุณสามารถเปลี่ยนเป็นโหมดอื่นได้ด้วยการกดแป้น กด 'T' เพื่อเปลี่ยน
ไปยังรายการธุรกรรมของ InnoDB เป็นต้น

กด '?' คีย์เพื่อดูว่าคีย์ใดทำงานอยู่ในโหมดปัจจุบัน คุณสามารถกดใด ๆ ของ
คีย์เหล่านี้และ innotop จะดำเนินการตามที่ร้องขอหรือแจ้งให้คุณป้อนข้อมูลเพิ่มเติม
หากระบบของคุณรองรับ Term::ReadLine คุณสามารถใช้ TAB และคีย์อื่นๆ เพื่อเติมข้อความอัตโนมัติได้
และแก้ไขอินพุต

หากต้องการออกจาก innotop ให้กดปุ่ม 'q'

OPTIONS


innotop ส่วนใหญ่กำหนดค่าผ่านไฟล์กำหนดค่า แต่การกำหนดค่าบางส่วน
ตัวเลือกสามารถมาจากบรรทัดคำสั่ง คุณยังสามารถระบุไฟล์ที่จะมอนิเตอร์ InnoDB
เอาท์พุทสถานะ; ดู "การตรวจสอบไฟล์" สำหรับรายละเอียดเพิ่มเติม

คุณสามารถลบล้างตัวเลือกบางตัวได้โดยนำหน้าชื่อตัวเลือกด้วย --no ตัวอย่างเช่น --noinc
(หรือ --no-inc) ปฏิเสธ "--inc"

--สี
เปิดหรือปิดการระบายสีเทอร์มินัล สอดคล้องกับการตั้งค่าไฟล์กำหนดค่า "สี"

--การกำหนดค่า
ระบุไฟล์การกำหนดค่าที่จะอ่าน ตัวเลือกนี้ไม่เหนียวเหนอะหนะคือบอกเลย
ไม่คงอยู่ในไฟล์การกำหนดค่าเอง

--นับ
รีเฟรชเฉพาะจำนวนครั้งที่ระบุ (กาเครื่องหมาย) ก่อนออก การรีเฟรชแต่ละครั้งคือ a
หยุดชั่วคราวสำหรับ "ช่วงเวลา" วินาที ตามด้วยการร้องขอข้อมูลจากการเชื่อมต่อ MySQL และ
พิมพ์ไปยังเครื่องปลายทาง

--ล่าช้า
ระบุระยะเวลาที่จะหยุดชั่วคราวระหว่างขีด (รีเฟรช) สอดคล้องกับ
ตัวเลือกการกำหนดค่า "ช่วงเวลา"

--ช่วยด้วย
พิมพ์สรุปการใช้บรรทัดคำสั่งและการออก

--เจ้าภาพ
โฮสต์ที่จะเชื่อมต่อกับ

--inc
ระบุว่า innotop ควรแสดงตัวเลขสัมบูรณ์หรือตัวเลขสัมพัทธ์ (offsets
จากค่าเดิม) สอดคล้องกับตัวเลือกการกำหนดค่า "status_inc"

--โหมด
ระบุโหมดที่ innotop ควรเริ่มต้น สอดคล้องกับการกำหนดค่า
ตัวเลือก "โหมด"

--ไม่นอยด์
เปิดใช้งานการทำงานแบบไม่โต้ตอบ ดู "การทำงานแบบไม่โต้ตอบ" สำหรับข้อมูลเพิ่มเติม

--รหัสผ่าน
รหัสผ่านเพื่อใช้ในการเชื่อมต่อ

--ท่า
พอร์ตที่ใช้เชื่อมต่อ

--สกิปเซ็นทรัล
อย่าอ่านไฟล์การกำหนดค่าส่วนกลาง

--ผู้ใช้
ผู้ใช้ที่จะใช้สำหรับการเชื่อมต่อ

--รุ่น
ข้อมูลเวอร์ชันเอาต์พุตและการออก

--เขียน
ตั้งค่าตัวเลือกการกำหนดค่า "อ่านอย่างเดียว" เป็น 0 ทำให้ innotop เขียนการทำงาน
การกำหนดค่าเป็น ~/.innotop/innotop.conf เมื่อออก หากไม่มีไฟล์การกำหนดค่าใดๆ ถูกโหลด
ที่เริ่มต้นขึ้น

ปุ่มลัด


innotop เป็นแบบโต้ตอบ และคุณควบคุมได้ด้วยการกดปุ่ม

· ปุ่มตัวพิมพ์ใหญ่สลับไปมาระหว่างโหมดต่างๆ

· ปุ่มตัวพิมพ์เล็กเริ่มต้นการดำเนินการบางอย่างภายในโหมดปัจจุบัน

· คีย์อื่นๆ ทำหน้าที่พิเศษ เช่น เปลี่ยนการกำหนดค่าหรือแสดงใบอนุญาต innotop

กด '?' เพื่อดูคีย์ที่ใช้งานอยู่ในปัจจุบันและสิ่งที่พวกเขาทำได้ตลอดเวลา

โหมด


แต่ละโหมดของ innotop จะดึงและแสดงข้อมูลบางประเภทจากเซิร์ฟเวอร์
คุณกำลังติดตาม คุณสลับไปมาระหว่างโหมดต่างๆ ด้วยปุ่มตัวพิมพ์ใหญ่ ต่อไปนี้เป็น
คำอธิบายสั้น ๆ ของแต่ละโหมด โดยเรียงตามตัวอักษร หากต้องการเปลี่ยนเป็นโหมด ให้กด
คีย์ที่แสดงอยู่ด้านหน้าส่วนหัวในรายการต่อไปนี้:

B: บัฟเฟอร์ InnoDB
โหมดนี้แสดงข้อมูลเกี่ยวกับบัฟเฟอร์พูล InnoDB, สถิติเพจ, การแทรก
บัฟเฟอร์และดัชนีแฮชแบบปรับได้ ข้อมูลมาจาก SHOW INNODB STATUS

โหมดนี้มี "buffer_pool", "page_statistics", "insert_buffers" และ
ตาราง "adaptive_hash_index" เป็นค่าเริ่มต้น

C: สรุปคำสั่ง
โหมดนี้คล้ายกับโหมดสรุปคำสั่งของ mytop มันแสดง "cmd_summary"
ตารางซึ่งมีลักษณะดังนี้:

สรุปคำสั่ง (สำหรับความช่วยเหลือ) localhost, 25+07:16:43, 2.45 QPS, 3 thd, 5.0.40
_____________________ สรุปคำสั่ง _____________________
ชื่อ มูลค่า Pct Last Incr Pct
เลือกสแกน 3244858 69.89% 2 100.00%
เลือกช่วง 1354177 29.17% 0 0.00%
Select_full_join 39479 0.85% 0 0.00%
เลือก_full_range_join 4097 0.09% 0 0.00%
Select_range_check 0 0.00% 0 0.00%

ตารางสรุปคำสั่งถูกสร้างขึ้นโดยการแยกตัวแปรจาก "STATUS_VARIABLES"
ตัวแปรต้องเป็นตัวเลขและต้องตรงกับคำนำหน้าที่กำหนดโดย "cmd_filter"
ตัวแปรการกำหนดค่า ตัวแปรจะถูกจัดเรียงตามค่าจากมากไปน้อยและ
เทียบกับตัวแปรสุดท้ายดังที่แสดงด้านบน คอลัมน์เปอร์เซ็นต์คือเปอร์เซ็นต์
ของตัวแปรทั้งหมดในตาราง คุณจึงเห็นน้ำหนักสัมพัทธ์ของ
ตัวแปร

ตัวอย่างจะแสดงสิ่งที่คุณเห็นหากคำนำหน้าคือ "Select_" คำนำหน้าเริ่มต้นคือ
"คอม_". คุณสามารถเลือกคำนำหน้าด้วยปุ่ม 's'

มันค่อนข้างเหมือนกับการเรียกใช้ SHOW VARIABLES LIKE "prefix%" ด้วยหน่วยความจำและ nice
การจัดรูปแบบ

ค่าจะถูกรวมไว้ในเซิร์ฟเวอร์ทั้งหมด คอลัมน์ Pct ไม่ถูกต้อง
รวมกันในหลายเซิร์ฟเวอร์ นี่เป็นข้อจำกัดที่ทราบของการจัดกลุ่ม
อัลกอริธึมที่อาจแก้ไขได้ในอนาคต

D: การหยุดชะงักของ InnoDB
โหมดนี้แสดงธุรกรรมที่เกี่ยวข้องกับการหยุดชะงักของ InnoDB ครั้งล่าสุด โต๊ะที่สอง
แสดงการล็อคแต่ละรายการที่ถือและรอ การชะงักงันเกิดจากวงจร
ในกราฟรอ ดังนั้นจึงควรมีการล็อคสองครั้งและหนึ่งครั้งรอเว้นแต่
ข้อมูลการหยุดชะงักจะถูกตัดทอน

InnoDB ใส่ข้อมูลการหยุดชะงักก่อนข้อมูลอื่น ๆ ใน SHOW INNODB
เอาต์พุตสถานะ ถ้าล็อคเยอะ ข้อมูลการหยุดชะงักจะเพิ่มขึ้นอย่างมาก
ใหญ่ และมีการจำกัดขนาดของเอาต์พุต SHOW INNODB STATUS ที่มีขนาดใหญ่
การชะงักงันสามารถเติมเต็มผลลัพธ์ทั้งหมด หรือแม้แต่ถูกตัดทอน และป้องกันไม่ให้คุณมองเห็น
ข้อมูลอื่น ๆ เลย หากคุณกำลังรัน innotop ในโหมดอื่น เช่น T
โหมดและทันใดนั้นคุณไม่เห็นอะไรเลยคุณอาจต้องการตรวจสอบและดูว่า a
การหยุดชะงักได้ล้างข้อมูลที่คุณต้องการ

หากมี คุณสามารถสร้างการหยุดชะงักขนาดเล็กเพื่อแทนที่การหยุดชะงักขนาดใหญ่ได้ ใช้ปุ่ม 'w'
เพื่อ 'เช็ด' การชะงักงันครั้งใหญ่ด้วยอันเล็กๆ สิ่งนี้จะไม่ทำงานจนกว่าคุณจะมี
กำหนดตารางการชะงักงันสำหรับการเชื่อมต่อ (ดู "การเชื่อมต่อเซิร์ฟเวอร์")

คุณยังสามารถกำหนดค่า innotop ให้ตรวจจับโดยอัตโนมัติเมื่อจำเป็นต้องมีการหยุดชะงักขนาดใหญ่
ถูกแทนที่ด้วยอันเล็ก (ดู "auto_wipe_dl")

โหมดนี้จะแสดงตาราง "deadlock_transactions" และ "deadlock_locks" โดยค่าเริ่มต้น

F: ข้อผิดพลาด InnoDB Foreign Key
โหมดนี้แสดงข้อมูลข้อผิดพลาดของคีย์ภายนอก InnoDB ล่าสุด เช่น ตารางที่
มันเกิดขึ้นเมื่อไหร่และใครและอะไรที่ทำให้เกิดคำถามเป็นต้น

InnoDB มีข้อความแสดงข้อผิดพลาดของคีย์ต่างประเทศมากมาย และหลายข้อความก็เพียงพอแล้ว
ยากที่จะแยกวิเคราะห์ innotop ไม่ได้ทำงานได้ดีที่สุดที่นี่ แต่มีโค้ดมากมาย
ทุ่มเทให้กับการแยกวิเคราะห์ผลลัพธ์ที่ยุ่งเหยิงและแยกวิเคราะห์ไม่ได้ซึ่ง innotop ไม่น่าจะเคยเป็น
สมบูรณ์ในเรื่องนี้ หาก innotop ไม่แสดงสิ่งที่คุณต้องดู ให้ดู
ที่ข้อความสถานะโดยตรง

โหมดนี้แสดงตาราง "fk_error" ตามค่าเริ่มต้น

I: ข้อมูล InnoDB I/O
โหมดนี้แสดงสถิติ I/O ของ InnoDB รวมถึงเธรด I/O, I/O ที่รอดำเนินการ, ไฟล์
เบ็ดเตล็ด I/O และบันทึกสถิติ มันแสดง "io_threads", "pending_io",
ตาราง "file_io_misc" และ "log_statistics" โดยค่าเริ่มต้น

L: ล็อค
โหมดนี้แสดงข้อมูลเกี่ยวกับการล็อกปัจจุบัน ในขณะนี้มีเพียงการล็อค InnoDB เท่านั้น
ได้รับการสนับสนุน และโดยค่าเริ่มต้น คุณจะเห็นการล็อกสำหรับธุรกรรมที่กำลังรออยู่เท่านั้น
ข้อมูลนี้มาจากส่วนธุรกรรมของข้อความสถานะ InnoDB ถ้า
คุณมีเซิร์ฟเวอร์ที่ยุ่งมาก คุณอาจต้องรอล็อกบ่อยๆ ช่วยให้สามารถ
ดูว่าตารางและดัชนีใดเป็น "ฮอตสปอต" สำหรับการล็อก หากเซิร์ฟเวอร์ของคุณกำลังทำงานอยู่
ค่อนข้างดีโหมดนี้ไม่ควรแสดงอะไรเลย

คุณสามารถกำหนดค่า MySQL และ innotop เพื่อตรวจสอบไม่เพียงแต่การล็อกที่ทำธุรกรรม
กำลังรออยู่ แต่ที่ถืออยู่ในปัจจุบันก็เช่นกัน คุณสามารถทำได้ด้วย InnoDB Lock
เฝ้าสังเกต (http://dev.mysql.com/doc/en/innodb-monitor.html>). มันไม่ได้บันทึกไว้ใน
คู่มือ MySQL แต่สร้างล็อกมอนิเตอร์ด้วยคำสั่งต่อไปนี้ด้วย
ส่งผลต่อเอาต์พุตของ SHOW INNODB STATUS ซึ่ง innotop ใช้:

สร้างตาราง innodb_lock_monitor(a int) ENGINE=INNODB;

สิ่งนี้ทำให้ InnoDB พิมพ์เอาต์พุตไปยังไฟล์ MySQL ทุก ๆ 16 วินาทีหรือมากกว่านั้นเช่น
ระบุไว้ในคู่มือแต่ยังทำให้การแสดงผล SHOW INNODB STATUS ปกติรวม
ล็อคข้อมูลซึ่ง innotop สามารถแยกวิเคราะห์และแสดงได้ (นั่นคือเอกสารที่ไม่มีเอกสาร)
คุณลักษณะ)

ซึ่งหมายความว่าคุณสามารถทำสิ่งที่ดูเหมือนเป็นไปไม่ได้: ในขอบเขตที่จำกัด (InnoDB
ตัดทอนข้อมูลบางส่วนในเอาต์พุต) คุณสามารถดูว่าธุรกรรมใดถือ
ล็อคอย่างอื่นกำลังรออยู่ คุณยังสามารถเปิดใช้งานและปิดใช้งาน InnoDB Lock
ตรวจสอบด้วยการจับคู่คีย์ในโหมดนี้

โหมดนี้จะแสดงตาราง "innodb_locks" โดยค่าเริ่มต้น นี่คือตัวอย่างหน้าจอ
เมื่อการเชื่อมต่อกำลังรอการล็อคการเชื่อมต่ออื่นจะถือ:

_________________________________ ล็อค InnoDB __________________________
CXN ID ประเภท กำลังรอ รอ โหมดแอ็คทีฟ DB ตาราง Index
localhost 12 บันทึก 1 00:10 00:10 X ทดสอบ t1 หลัก
localhost 12 ตาราง 0 00:10 00:10 การทดสอบทรงเครื่อง t1
localhost 12 บันทึก 1 00:10 00:10 X ทดสอบ t1 หลัก
localhost 11 ตาราง 0 00:00 00:25 การทดสอบทรงเครื่อง t1
localhost 11 บันทึก 0 00:00 00:25 X ทดสอบ t1 หลัก

คุณสามารถเห็นการเชื่อมต่อครั้งแรก ID 12 กำลังรอการล็อคบนคีย์หลักบน
test.t1 และรอมา 10 วินาทีแล้ว การเชื่อมต่อที่สองไม่รอ
เนื่องจากคอลัมน์กำลังรอเป็น 0 แต่มีการล็อกบนดัชนีเดียวกัน ที่บอกคุณ
การเชื่อมต่อ 11 กำลังบล็อกการเชื่อมต่อ 12

M: สถานะการจำลองแบบ Master/Slave
โหมดนี้แสดงเอาต์พุตของ SHOW SLAVE STATUS และ SHOW MASTER STATUS ในสาม
ตาราง สองอันดับแรกแบ่งสถานะของสเลฟเป็นสถานะเธรด SQL และ I/O และ
ล่าสุดแสดงสถานะหลัก ใช้ตัวกรองเพื่อกำจัดเซิร์ฟเวอร์ที่ไม่ใช่ทาสออกจาก
ตารางสเลฟและเซิร์ฟเวอร์ที่ไม่ใช่มาสเตอร์จากตารางมาสเตอร์

โหมดนี้แสดง "slave_sql_status", "slave_io_status" และ "master_status"
ตารางโดยค่าเริ่มต้น

O: เปิดโต๊ะ
ส่วนนี้มาจากคำสั่ง SHOW OPEN TABLES ของ MySQL โดยค่าเริ่มต้น จะถูกกรอง
เพื่อแสดงตารางที่มีการใช้งานโดยแบบสอบถามหนึ่งรายการขึ้นไป คุณจึงสามารถดูได้อย่างรวดเร็วที่
ตารางใดที่ 'ร้อน' คุณสามารถใช้สิ่งนี้เพื่อเดาว่าตารางใดอาจถูกล็อค
โดยปริยาย

โหมดนี้จะแสดงโหมด "open_tables" โดยค่าเริ่มต้น

ถาม: รายการแบบสอบถาม
โหมดนี้แสดงเอาต์พุตจาก SHOW FULL PROCESSLIST เหมือน มายท็อปรายการค้นหาของ
โหมด. โหมดนี้ไม่ ไม่ แสดงข้อมูลที่เกี่ยวข้องกับ InnoDB นี่อาจเป็นหนึ่งใน
โหมดที่มีประโยชน์ที่สุดสำหรับการใช้งานทั่วไป

มีส่วนหัวข้อมูลที่แสดงข้อมูลสถานะทั่วไปเกี่ยวกับ your
เซิร์ฟเวอร์ คุณสามารถสลับเปิดและปิดได้ด้วยปุ่ม 'h' โดยค่าเริ่มต้น innotop ซ่อน
กระบวนการที่ไม่ใช้งานและกระบวนการของตัวเอง คุณสามารถสลับเปิดและปิดสิ่งเหล่านี้ได้ด้วยปุ่ม 'i'
และปุ่ม 'a'

คุณสามารถอธิบายการสืบค้นจากโหมดนี้ด้วยปุ่ม 'e' นี่จะแสดงข้อความค้นหาของ
ข้อความแบบเต็ม, ผลลัพธ์ของคำอธิบาย, และในเวอร์ชัน MySQL ที่ใหม่กว่า, แม้กระทั่งการปรับปรุงที่ดีที่สุด
แบบสอบถามที่เกิดจาก EXPLAIN EXTENDED innotop ยังพยายามเขียนข้อความค้นหาใหม่อีกด้วย
เพื่อให้พวกเขาอธิบายได้ ตัวอย่างเช่น คำสั่ง INSERT/SELECT สามารถเขียนซ้ำได้

โหมดนี้แสดงตาราง "q_header" และ "processlist" ตามค่าเริ่มต้น

R: การดำเนินการแถว InnoDB และสัญญาณ
โหมดนี้แสดงการทำงานของแถว InnoDB การทำงานของแถวเบ็ดเตล็ด สัญญาณ และ
ข้อมูลจากอาร์เรย์รอ มันแสดง "row_operations",
ตาราง "row_operation_misc", "semaphores" และ "wait_array" เป็นค่าเริ่มต้น

S: ตัวแปร & สถานะ
โหมดนี้จะคำนวณสถิติ เช่น การสืบค้นต่อวินาที และพิมพ์ออกมาใน
หลายรูปแบบที่แตกต่างกัน คุณสามารถแสดงค่าสัมบูรณ์หรือค่าที่เพิ่มขึ้นระหว่าง
เห็บ

คุณสามารถสลับระหว่างมุมมองต่างๆ ได้โดยการกดปุ่ม แป้น 's' พิมพ์บรรทัดเดียว
ทุกครั้งที่หน้าจออัปเดตในสไตล์ของ vmstat. ปุ่ม 'g' เปลี่ยนมุมมองเป็น
กราฟของตัวเลขเดียวกัน เรียงลำดับเหมือน โหลด. ปุ่ม 'v' เปลี่ยนมุมมองเป็น a
ตารางหมุนของชื่อตัวแปรทางด้านซ้าย โดยมีการอัพเดตต่อเนื่องที่เลื่อนผ่าน
หน้าจอจากซ้ายไปขวา คุณสามารถเลือกจำนวนการอัปเดตที่จะวางบนหน้าจอ
ด้วยตัวแปรการกำหนดค่า "num_status_sets"

ส่วนหัวอาจย่อให้พอดีกับหน้าจอในการใช้งานแบบโต้ตอบ คุณเลือก
ตัวแปรใดที่จะแสดงด้วยปุ่ม 'c' ซึ่งเลือกจากชุดที่กำหนดไว้ล่วงหน้า หรือ
ให้คุณสร้างชุดของคุณเอง คุณสามารถแก้ไขชุดปัจจุบันด้วยปุ่ม 'e'

โหมดนี้จะไม่แสดงตารางใดๆ เหมือนกับโหมดอื่นๆ จะใช้ a . แทน
คำจำกัดความของตารางเพื่อแยกและจัดรูปแบบข้อมูล แต่จะแปลงผลลัพธ์เป็น
วิธีพิเศษก่อนส่งออก ใช้คำจำกัดความตาราง "var_status" สำหรับ
นี้.

T: ธุรกรรม InnoDB
โหมดนี้แสดงธุรกรรมจากเอาต์พุตของมอนิเตอร์ InnoDB ใน ด้านบน- ชอบรูปแบบ
โหมดนี้เป็นเหตุผลที่ฉันเขียนอินโนท็อป

คุณสามารถปิดการสืบค้นหรือประมวลผลด้วยปุ่ม 'k' และ 'x' และอธิบายการสืบค้นด้วย
ปุ่ม 'e' หรือ 'f' InnoDB ไม่พิมพ์แบบสอบถามแบบเต็มในการทำธุรกรรมดังนั้น
การอธิบายอาจใช้การไม่ได้หากคิวรีถูกตัดทอน

ส่วนหัวของข้อมูลสามารถเปิดและปิดได้ด้วยปุ่ม 'h' โดยค่าเริ่มต้น,
innotop ซ่อนธุรกรรมที่ไม่ได้ใช้งานและธุรกรรมของตัวเอง คุณสามารถสลับไปที่
และปิดด้วยปุ่ม 'i' และ 'a'

โหมดนี้แสดงตาราง "t_header" และ "innodb_transactions" โดยค่าเริ่มต้น

นวัตกรรม สถานภาพ


บรรทัดแรกที่แสดง innotop คือ "แถบสถานะ" ประเภทต่างๆ สิ่งที่มีขึ้นอยู่กับ
โหมดที่คุณอยู่ และเซิร์ฟเวอร์ที่คุณกำลังตรวจสอบ คำสองสามคำแรกเสมอ
[RO] (หากตั้งค่าอ่านอย่างเดียวเป็น 1) โหมด innotop เช่น "InnoDB Txns" สำหรับโหมด T
ตามด้วยการเตือนให้กด '?' เพื่อขอความช่วยเหลือได้ตลอดเวลา

ONE SERVER
กรณีที่ง่ายที่สุดคือเมื่อคุณตรวจสอบเซิร์ฟเวอร์เดียว ในกรณีนี้ชื่อของ
การเชื่อมต่ออยู่ถัดไปในบรรทัดสถานะ นี่คือชื่อที่คุณตั้งไว้เมื่อคุณสร้าง
การเชื่อมต่อ -- น่าจะเป็นชื่อโฮสต์ของเซิร์ฟเวอร์ MySQL ตามด้วยเซิร์ฟเวอร์ของ
เวลาทำงาน

หากคุณอยู่ในโหมด InnoDB เช่น T หรือ B คำถัดไปคือ "InnoDB" ตามด้วยบางคำ
ข้อมูลเกี่ยวกับเอาต์พุต SHOW INNODB STATUS ที่ใช้เพื่อแสดงหน้าจอ คำแรก
คือจำนวนวินาทีตั้งแต่ SHOW INNODB STATUS ล่าสุด ซึ่ง InnoDB ใช้ในการคำนวณ
สถิติบางส่วนต่อวินาที ต่อไปเป็นหน้ายิ้มที่บ่งบอกว่า InnoDB
เอาต์พุตถูกตัดทอน ถ้าหน้ายิ้มเป็น :-) ทุกอย่างก็เรียบร้อย ไม่มีการตัดทอน อา
:^| หมายถึงรายการธุรกรรมยาวมาก InnoDB ได้พิมพ์เพียงบางส่วนเท่านั้น
การทำธุรกรรม สุดท้าย ขมวดคิ้ว :-( หมายถึงผลลัพธ์ไม่สมบูรณ์ ซึ่งอาจเนื่องมาจาก
การพิมพ์ข้อมูลการล็อกมากเกินไป (ดู "D: InnoDB Deadlocks")

สองคำถัดไประบุการสืบค้นของเซิร์ฟเวอร์ต่อวินาที (QPS) และจำนวนเธรด
(การเชื่อมต่อ) มีอยู่ สุดท้าย หมายเลขเวอร์ชันของเซิร์ฟเวอร์เป็นสิ่งสุดท้ายในบรรทัด

หลาย เซิร์ฟเวอร์
หากคุณกำลังตรวจสอบเซิร์ฟเวอร์หลายเครื่อง (ดู "การเชื่อมต่อเซิร์ฟเวอร์") บรรทัดสถานะจะ
ไม่แสดงรายละเอียดใดๆ เกี่ยวกับเซิร์ฟเวอร์แต่ละเครื่อง แต่จะแสดงชื่อของ
การเชื่อมต่อที่ใช้งานอยู่ อีกครั้ง นี่คือชื่อการเชื่อมต่อที่คุณระบุ ซึ่งก็คือ
น่าจะเป็นชื่อโฮสต์ของเซิร์ฟเวอร์ การเชื่อมต่อที่มีข้อผิดพลาดนำหน้าด้วย an
เครื่องหมายอัศเจรีย์

หากคุณกำลังตรวจสอบกลุ่มของเซิร์ฟเวอร์ (ดู "กลุ่มเซิร์ฟเวอร์") บรรทัดสถานะจะแสดง
ชื่อกลุ่ม หากการเชื่อมต่อใด ๆ ในกลุ่มมีข้อผิดพลาด ชื่อกลุ่มคือ
ตามด้วยส่วนของการเชื่อมต่อที่ไม่มีข้อผิดพลาด

ดู "การจัดการข้อผิดพลาด" สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการจัดการข้อผิดพลาดของ innotop

การติดตามตรวจสอบ A ไฟล์
หากคุณให้ชื่อไฟล์บนบรรทัดคำสั่ง innotop จะไม่เชื่อมต่อกับเซิร์ฟเวอร์ใด ๆ ที่
ทั้งหมด. มันจะดูไฟล์ที่ระบุสำหรับเอาต์พุตสถานะ InnoDB และใช้เป็นข้อมูล
แหล่งที่มา. มันจะแสดงการเชื่อมต่อเดียวที่เรียกว่า 'ไฟล์' เสมอ และเนื่องจากไม่สามารถ
เชื่อมต่อกับเซิร์ฟเวอร์ มันไม่สามารถระบุได้ว่าเซิร์ฟเวอร์ที่ตรวจสอบอยู่นั้นใช้เวลานานเท่าใด
ดังนั้นมันจึงคำนวณเวลาทำงานของเซิร์ฟเวอร์ตามเวลาตั้งแต่ innotop เริ่มทำงาน

SERVER การบริหารงาน


แม้ว่า innotop จะเป็นมอนิเตอร์ที่ให้คุณดูและวิเคราะห์เซิร์ฟเวอร์ของคุณเป็นหลัก แต่ก็สามารถ
ยังส่งคำสั่งไปยังเซิร์ฟเวอร์ คำสั่งที่มีประโยชน์มากที่สุดคือการฆ่าคิวรี
และหยุดหรือเริ่มต้นทาส

คุณสามารถฆ่าการเชื่อมต่อหรือในเวอร์ชันที่ใหม่กว่าของ MySQL ให้ฆ่าการสืบค้น แต่ไม่ใช่a
การเชื่อมต่อจากโหมด "Q: Query List" และ "T: InnoDB Transactions" กด 'k' เพื่อออก a
คำสั่ง KILL หรือ 'x' เพื่อออกคำสั่ง KILL QUERY innotop จะแจ้งให้คุณทราบสำหรับ
เซิร์ฟเวอร์และ/หรือ ID การเชื่อมต่อที่จะฆ่า (innotop จะไม่แจ้งให้คุณทราบหากมีเพียงตัวเดียว
ทางเลือกที่เป็นไปได้สำหรับอินพุตใด ๆ ) innotop เลือกคิวรีที่ยาวที่สุดล่วงหน้าหรือ
การเชื่อมต่อที่เก่าแก่ที่สุด ยืนยันคำสั่งด้วย 'y'

ใน "สถานะการจำลองแบบทาส"" ใน "โหมด M: Master คุณสามารถเริ่มและหยุดทาสด้วย
ปุ่ม 'a' และ 'o' ตามลำดับ คุณสามารถส่งคำสั่งเหล่านี้ไปยังทาสหลายคนได้ในครั้งเดียว
innotop เติมคำสั่งเริ่มต้นของ START SLAVE หรือ STOP SLAVE ให้คุณ แต่คุณสามารถ
จริง ๆ แล้วแก้ไขคำสั่งและส่งสิ่งที่คุณต้องการเช่น SET GLOBAL
SQL_SLAVE_SKIP_COUNTER=1 เพื่อให้ทาสข้ามเหตุการณ์ binlog หนึ่งเหตุการณ์เมื่อเริ่มต้น

คุณยังสามารถขอให้ innotop คำนวณ binlog แรกสุดที่ใช้โดยทาสและออก a
PURGE MASTER LOGS บนต้นแบบ ใช้ปุ่ม 'b' สำหรับสิ่งนี้ innotop จะถามคุณสำหรับ a
master เพื่อรันคำสั่ง จากนั้นให้คุณใส่ชื่อการเชื่อมต่อของ master's . นั้น
ทาส (ไม่มีทางที่ innotop จะตัดสินสิ่งนี้ได้อย่างน่าเชื่อถือ) innotop จะพบว่า
binlog ขั้นต่ำที่ใช้โดยการเชื่อมต่อทาสเหล่านี้และแนะนำว่าเป็นอาร์กิวเมนต์ของ
PURGE MASTER บันทึก

SERVER การเชื่อมต่อ


เมื่อคุณสร้างการเชื่อมต่อเซิร์ฟเวอร์โดยใช้ '@' innotop จะถามคุณถึงชุดของอินพุตเช่น
ดังต่อไปนี้:

DSN DSN คือชื่อแหล่งข้อมูล ซึ่งเป็นอาร์กิวเมนต์เริ่มต้นที่ส่งผ่านไปยังโมดูล DBI
สำหรับการเชื่อมต่อกับเซิร์ฟเวอร์ มักจะอยู่ในรูปแบบ

DBI:mysql:;mysql_read_default_group=mysql;host=HOSTNAME

เนื่องจาก DSN นี้ถูกส่งไปยังไดรเวอร์ DBD::mysql คุณจึงควรอ่านไดรเวอร์
เอกสารประกอบที่ "/search.cpan.org/dist/DBD-mysql/lib/DBD/mysql.pm"" ใน "http: สำหรับ
รายละเอียดที่แน่นอนเกี่ยวกับตัวเลือกทั้งหมดที่คุณสามารถส่งไดรเวอร์ใน DSN คุณอ่านได้
ข้อมูลเพิ่มเติมเกี่ยวกับ DBI ที่http://dbi.perl.org/docs/> และโดยเฉพาะอย่างยิ่งที่
<http://search.cpan.org/~timb/DBI/DBI.pm>.

ตัวเลือก mysql_read_default_group=mysql ช่วยให้ไดรเวอร์ DBD อ่านตัวเลือก MySQL ของคุณ
ไฟล์เช่น ~/.my.cnf บนระบบ UNIX-ish คุณสามารถใช้เพื่อหลีกเลี่ยงการระบุ a
ชื่อผู้ใช้หรือรหัสผ่านสำหรับการเชื่อมต่อ

ตาราง Deadlock InnoDB
รายการทางเลือกนี้บอกชื่อตาราง innotop ที่สามารถใช้เพื่อสร้าง a . อย่างจงใจ
การหยุดชะงักเล็ก ๆ (ดู "D: InnoDB Deadlocks") หากคุณระบุตัวเลือกนี้ คุณเพียงแค่ต้อง
เพื่อให้แน่ใจว่าไม่มีตารางอยู่ และ innotop ก็สามารถสร้างและวางตารางได้
ด้วยเอ็นจิ้นการจัดเก็บ InnoDB คุณสามารถละเว้นหรือยอมรับค่าเริ่มต้นได้อย่างปลอดภัยหากคุณ
ไม่ได้ตั้งใจจะใช้สิ่งนี้

ชื่อผู้ใช้
innotop จะถามคุณว่าคุณต้องการระบุชื่อผู้ใช้หรือไม่ ถ้าคุณพูดว่า 'y' มันจะ
แจ้งให้คุณใส่ชื่อผู้ใช้ หากคุณมีไฟล์ตัวเลือก MySQL ที่ระบุไฟล์ของคุณ
username คุณไม่จำเป็นต้องระบุชื่อผู้ใช้

ชื่อผู้ใช้มีค่าเริ่มต้นเป็นชื่อเข้าสู่ระบบของคุณในระบบที่คุณกำลังใช้งาน innotop

รหัสผ่าน
innotop จะถามคุณว่าคุณต้องการระบุรหัสผ่านหรือไม่ เช่นเดียวกับชื่อผู้ใช้ the
รหัสผ่านเป็นทางเลือก แต่มีข้อความแจ้งเพิ่มเติมที่ถามว่าคุณต้องการบันทึกหรือไม่
รหัสผ่านในไฟล์กำหนดค่า innotop ถ้าคุณไม่บันทึกไว้ใน
ไฟล์การกำหนดค่า innotop จะแจ้งให้คุณใส่รหัสผ่านทุกครั้งที่เริ่มทำงาน
รหัสผ่านในไฟล์กำหนดค่า innotop จะถูกบันทึกเป็นข้อความธรรมดา ไม่ได้เข้ารหัสใน
อย่างไรก็ตาม.

เมื่อคุณตอบคำถามเหล่านี้เสร็จแล้ว คุณควรเชื่อมต่อกับเซิร์ฟเวอร์ แต่
innotop ไม่ได้จำกัดแค่การตรวจสอบเซิร์ฟเวอร์เดียว คุณสามารถกำหนดเซิร์ฟเวอร์จำนวนมาก
การเชื่อมต่อและสลับไปมาระหว่างกันโดยกดปุ่ม '@' ดู "การสลับระหว่าง
การเชื่อมต่อ".

SERVER กลุ่ม


หากคุณมีอินสแตนซ์ MySQL หลายรายการ คุณสามารถใส่ลงในกลุ่มที่มีชื่อได้ เช่น 'ทั้งหมด'
'ปรมาจารย์' และ 'ทาส' ซึ่ง innotop สามารถตรวจสอบได้พร้อมกัน

คุณสามารถเลือกกลุ่มที่จะตรวจสอบด้วยปุ่ม '#' และคุณสามารถกดปุ่ม TAB เพื่อ
สลับไปยังกลุ่มถัดไป หากคุณไม่ได้ติดตามกลุ่มอยู่ในขณะนี้ ให้กด TAB
เลือกกลุ่มแรก

ในการสร้างกลุ่ม ให้กดปุ่ม '#' แล้วพิมพ์ชื่อกลุ่มใหม่ของคุณ จากนั้นพิมพ์
ชื่อของการเชื่อมต่อที่คุณต้องการให้กลุ่มมี

การสลับ ระหว่าง การเชื่อมต่อ


innotop ให้คุณเปลี่ยนเซิร์ฟเวอร์ที่คุณกำลังตรวจสอบได้อย่างรวดเร็ว วิธีพื้นฐานที่สุดคือโดย
กดปุ่ม '@' และพิมพ์ชื่อการเชื่อมต่อที่คุณต้องการใช้ นี้
การตั้งค่าเป็นแบบต่อโหมด คุณจึงตรวจสอบการเชื่อมต่อต่างๆ ในแต่ละโหมดและ innotop . ได้
จดจำการเชื่อมต่อที่คุณเลือก

คุณสามารถสลับไปใช้การเชื่อมต่อ 'ถัดไป' ได้อย่างรวดเร็วโดยเรียงตามตัวอักษรด้วยปุ่ม 'n'
หากคุณกำลังตรวจสอบกลุ่มเซิร์ฟเวอร์ (ดู "กลุ่มเซิร์ฟเวอร์") สิ่งนี้จะเปลี่ยนเป็นกลุ่มแรก
สัมพันธ์

คุณยังสามารถพิมพ์ชื่อการเชื่อมต่อได้หลายชื่อ และ innotop จะดึงและแสดงข้อมูลจากชื่อเหล่านั้น
ทั้งหมด. เพียงแยกชื่อการเชื่อมต่อด้วยการเว้นวรรค เช่น "server1 server2"
อีกครั้ง หากคุณพิมพ์ชื่อการเชื่อมต่อที่ไม่มีอยู่ innotop จะแจ้งให้คุณทราบ
สำหรับข้อมูลการเชื่อมต่อและสร้างการเชื่อมต่อ

อีกวิธีหนึ่งในการตรวจสอบการเชื่อมต่อหลายรายการพร้อมกันคือกับกลุ่มเซิร์ฟเวอร์ คุณสามารถใช้ได้
ปุ่ม TAB เพื่อสลับไปยังกลุ่ม 'ถัดไป' ตามลำดับตัวอักษร หรือถ้าคุณไม่ใช่
ตรวจสอบกลุ่มใด ๆ TAB จะสลับไปที่กลุ่มแรก

innotop ไม่ได้ดึงข้อมูลแบบขนานจากการเชื่อมต่อ ดังนั้น หากคุณกำลังตรวจสอบข้อมูลขนาดใหญ่
กลุ่มหรือการเชื่อมต่อจำนวนมาก คุณอาจสังเกตเห็นความล่าช้าที่เพิ่มขึ้นระหว่างเห็บ

เมื่อคุณตรวจสอบการเชื่อมต่อมากกว่าหนึ่งรายการ แถบสถานะของ innotop จะเปลี่ยนไป ดู "INNOTOP
สถานะ".

ข้อผิดพลาด การจัดการ


การจัดการข้อผิดพลาดไม่สำคัญเมื่อตรวจสอบการเชื่อมต่อเดียว แต่มีความสำคัญ
เมื่อคุณมีการเชื่อมต่อที่ใช้งานอยู่จำนวนมาก เซิร์ฟเวอร์ที่ขัดข้องหรือขาดการเชื่อมต่อไม่ควร
ผิดพลาด innotop เป็นผลให้ innotop จะทำงานต่อไปแม้ว่าจะมีข้อผิดพลาด มัน
จะไม่แสดงข้อมูลใด ๆ จากการเชื่อมต่อที่มีข้อผิดพลาด เพราะว่า
สิ่งนี้ พฤติกรรมของ innotop อาจทำให้คุณสับสน มันเป็นคุณสมบัติไม่ใช่จุดบกพร่อง!

innotop จะไม่ทำการค้นหาการเชื่อมต่อที่มีข้อผิดพลาดต่อไป เพราะพวกเขาอาจจะช้า
innotop และทำให้ใช้งานยากโดยเฉพาะอย่างยิ่งหากข้อผิดพลาดคือปัญหาในการเชื่อมต่อและ
ทำให้เกิดการหมดเวลานาน แต่ innotop จะลองเชื่อมต่อใหม่เป็นครั้งคราวเพื่อดูว่า
ข้อผิดพลาดยังคงมีอยู่ ถ้าเป็นเช่นนั้นก็จะรอจนกว่าจะถึงจุดหนึ่งในอนาคต การรอคอย
เวลาเพิ่มขึ้นในเห็บตามอนุกรมฟีโบนักชีดังนั้นจึงพยายามน้อยลงตามเวลา
ผ่าน

เนื่องจากข้อผิดพลาดอาจเกิดขึ้นในบางโหมดเท่านั้นเนื่องจากคำสั่ง SQL ที่ออกใน
โหมดเหล่านั้น innotop ติดตามว่าโหมดใดทำให้เกิดข้อผิดพลาด หากคุณเปลี่ยนไปใช้ a
โหมดอื่น innotop จะลองเชื่อมต่อใหม่แทนที่จะรอ

โดยค่าเริ่มต้น innotop จะแสดงปัญหาเป็นข้อความสีแดงที่ด้านล่างของตารางแรก
บนหน้าจอ. คุณสามารถปิดการใช้งานการทำงานนี้ด้วย "show_cxn_errors_in_tbl"
ตัวเลือกการกำหนดค่าซึ่งเปิดใช้งานโดยค่าเริ่มต้น หากเปิดใช้งานตัวเลือก "ดีบัก"
innotop จะแสดงข้อผิดพลาดที่ด้านล่างของทุกตาราง ไม่ใช่แค่ครั้งแรก และถ้า
เปิดใช้งาน "show_cxn_errors" แล้ว innotop จะพิมพ์ข้อความแสดงข้อผิดพลาดไปที่ STDOUT เช่นกัน ข้อผิดพลาด
ข้อความอาจแสดงเฉพาะในโหมดที่ทำให้เกิดข้อผิดพลาด ขึ้นอยู่กับโหมดและ
ไม่ว่า innotop จะหลีกเลี่ยงการสอบถามการเชื่อมต่อนั้นหรือไม่

ไม่โต้ตอบ ในการดำเนินกิจการ


คุณสามารถเรียกใช้ innotop ในโหมดไม่โต้ตอบ ซึ่งในกรณีนี้จะถูกควบคุมทั้งหมดจาก
ไฟล์การกำหนดค่าและตัวเลือกบรรทัดคำสั่ง ในการเริ่ม innotop แบบ non-interactive
โหมด ให้ตัวเลือกบรรทัดคำสั่ง L"<--nonint"> สิ่งนี้จะเปลี่ยนพฤติกรรมของ innotop ใน
วิธีต่อไปนี้:

· ไม่ได้โหลดโมดูล Perl บางตัว Term::Readline ไม่ได้โหลด เนื่องจาก innotop
ไม่แจ้งแบบโต้ตอบ Term::ANSIColor และ Win32::Console::ANSI modules are
ไม่ได้โหลด Term::ReadKey ยังคงใช้อยู่ เนื่องจาก innotop อาจต้องแจ้งให้
รหัสผ่านการเชื่อมต่อเมื่อเริ่มต้นขึ้น

· innotop ไม่ล้างหน้าจอหลังจากติ๊กแต่ละครั้ง

· innotop จะไม่ยืนยันการเปลี่ยนแปลงใด ๆ กับไฟล์การกำหนดค่า

· หากให้ "--count" และ innotop อยู่ในโหมดที่เพิ่มขึ้น (ดู "status_inc" และ
"--inc"), innotop รีเฟรชจริง ๆ อีกครั้งมากกว่าที่ระบุเพื่อให้สามารถพิมพ์ได้
สถิติที่เพิ่มขึ้น สิ่งนี้จะระงับเอาต์พุตระหว่างติ๊กแรก ดังนั้น innotop อาจ
ดูเหมือนจะแขวน

· innotop แสดงเฉพาะตารางแรกในแต่ละโหมด นี่คือผลลัพธ์ที่ได้
ประมวลผลอย่างง่ายดายด้วยยูทิลิตี้บรรทัดคำสั่งอื่น ๆ เช่น awk และ sed เพื่อเปลี่ยนแปลง
ตารางใดบ้างที่แสดงในแต่ละโหมด โปรดดู "ตาราง" เนื่องจากโหมด "Q: Query List" เป็นเช่นนั้น
สำคัญ innotop จะปิดใช้งานตาราง "q_header" โดยอัตโนมัติ สิ่งนี้ทำให้มั่นใจได้ว่าคุณจะ
ดูตาราง "รายการกระบวนการ" แม้ว่าคุณจะได้กำหนดค่า innotop ให้แสดง q_header
ตารางระหว่างการทำงานแบบโต้ตอบ ในทำนองเดียวกัน ในโหมด "T: InnoDB Transactions" ค่า
ตาราง "t_header" ถูกระงับ ดังนั้นคุณจะเห็นเฉพาะตาราง "innodb_transactions"

· เอาต์พุตทั้งหมดถูกคั่นด้วยแท็บแทนที่จะจัดแนวคอลัมน์ด้วยช่องว่าง และ
innotop พิมพ์เนื้อหาทั้งหมดของแต่ละตารางแทนที่จะพิมพ์เพียงหน้าจอเดียว
ขณะนั้น.

· innotop พิมพ์ส่วนหัวของคอลัมน์เพียงครั้งเดียวแทนการทำเครื่องหมายทุกอัน (ดู "hide_hdr")
innotop ไม่พิมพ์คำอธิบายตาราง (ดู "display_table_captions") innotop มั่นใจ
ไม่มีบรรทัดว่างในผลลัพธ์

· innotop ไม่ให้เกียรติการเปลี่ยนแปลง "ย่อ" ซึ่งปกติจะทำให้สั้นลงบ้าง
ตัวเลขในรูปแบบที่มนุษย์อ่านได้

· innotop ไม่พิมพ์บรรทัดสถานะ (ดู "สถานะ INNOTOP")

การกำหนดค่า


เกือบทุกอย่างเกี่ยวกับ innotop สามารถกำหนดค่าได้ หลายๆ อย่างสามารถเปลี่ยนแปลงได้ด้วย
คำสั่งในตัว แต่คุณยังสามารถแก้ไขไฟล์การกำหนดค่าได้

ในขณะที่เรียกใช้ innotop ให้กดปุ่ม '$' เพื่อเปิดกล่องโต้ตอบการแก้ไขการกำหนดค่า
กดปุ่มอื่นเพื่อเลือกประเภทข้อมูลที่คุณต้องการแก้ไข:

S: คำชี้แจงเวลานอน
แก้ไขการหน่วงเวลาการนอนหลับของคำสั่ง SQL ซึ่งทำให้ innotop หยุดชั่วคราวตามจำนวนที่ระบุ
เวลาหลังจากดำเนินการคำสั่ง ดู "คำสั่ง SQL" สำหรับคำจำกัดความของแต่ละ
คำสั่งและสิ่งที่ทำ โดยค่าเริ่มต้น innotop จะไม่ล่าช้าหลังจากคำสั่งใด ๆ

ฟีเจอร์นี้รวมอยู่ด้วยเพื่อให้คุณปรับแต่งผลข้างเคียงที่เกิดจากการตรวจสอบได้
เซิร์ฟเวอร์ของคุณ คุณอาจไม่เห็นเอฟเฟกต์ใด ๆ แต่ผู้ใช้ innotop บางคนสังเกตเห็นว่า
MySQL บางรุ่นภายใต้ภาระที่สูงมากโดยเปิดใช้งาน InnoDB ใช้เวลานานกว่าปกติ
เพื่อดำเนินการ SHOW GLOBAL STATUS หาก innotop โทร SHOW FULL PROCESSLIST ทันที
หลังจากนั้น รายการกระบวนการจะมีคำถามมากกว่าที่เครื่องเฉลี่ยที่
ช่วงเวลาใดก็ตาม กำหนดค่า innotop ให้หยุดชั่วครู่หลังจากเรียก SHOW GLOBAL
STATUS บรรเทาผลกระทบนี้

เวลาพักเครื่องจะถูกเก็บไว้ในส่วน "stmt_sleep_times" ของไฟล์การกำหนดค่า
รองรับสลีปเศษส่วนวินาที ขึ้นอยู่กับข้อจำกัดของฮาร์ดแวร์ของคุณ

c: แก้ไขคอลัมน์
เริ่มเอดิเตอร์ตารางบนตารางที่แสดง ดู "ตัวแก้ไขตาราง" หนึ่ง
ทางเลือกอื่นในการเริ่มตัวแก้ไขตารางโดยไม่ต้องเข้าสู่ไดอะล็อกการกำหนดค่าคือ
ด้วยปุ่ม '^'

g: การกำหนดค่าทั่วไป
เริ่มตัวแก้ไขคอนฟิกูเรชันเพื่อแก้ไขคอนฟิกูเรชันเฉพาะโหมดและโกลบอล
ตัวแปร (ดู "โหมด") innotop แจ้งให้คุณเลือกตัวแปรจาก
โกลบอลและโหมดเฉพาะขึ้นอยู่กับโหมดปัจจุบัน

k: กฎการระบายสีแถว
เริ่มตัวแก้ไขกฎการระบายสีแถวบนตารางที่แสดง ดู "สี"
เพื่อดูรายละเอียด

p: จัดการปลั๊กอิน
เริ่มตัวแก้ไขการกำหนดค่าปลั๊กอิน ดู "ปลั๊กอิน" สำหรับรายละเอียด

s: กลุ่มเซิร์ฟเวอร์
ให้คุณสร้างและแก้ไขกลุ่มเซิร์ฟเวอร์ ดู "กลุ่มเซิร์ฟเวอร์"

t: เลือกตารางที่แสดง
ให้คุณเลือกตารางที่จะแสดงในโหมดนี้ ดู "โหมด" และ "ตาราง"

การกำหนดค่า ไฟล์


ตำแหน่งไฟล์การกำหนดค่าเริ่มต้นของ innotop คือ $HOME/.innotop และ
/etc/innotop/innotop.conf และค้นหาตามลำดับนั้น ถ้าครั้งแรก
มีไฟล์คอนฟิกูเรชันอยู่ ไฟล์ที่สองจะไม่ถูกประมวลผล สิ่งเหล่านี้สามารถแทนที่ด้วย
ตัวเลือกบรรทัดคำสั่ง "--config" คุณสามารถแก้ไขได้ด้วยมืออย่างปลอดภัยอย่างไรก็ตาม innotop reads
ไฟล์การกำหนดค่าเมื่อเริ่มต้น และหากตั้งค่าอ่านอย่างเดียวเป็น 0 ให้เขียนอีกครั้ง
เมื่อมันออกไป ดังนั้น หากตั้งค่าอ่านอย่างเดียวเป็น 0 การเปลี่ยนแปลงใดๆ ที่คุณทำขึ้นเองขณะ innotop
ที่กำลังวิ่งจะหายไป

innotop ไม่ได้เก็บการกำหนดค่าทั้งหมดในไฟล์การกำหนดค่า มันมีขนาดใหญ่
ชุดของการกำหนดค่าเริ่มต้นที่เก็บเฉพาะในหน่วยความจำและการกำหนดค่า
ไฟล์จะแทนที่ค่าเริ่มต้นเหล่านี้เท่านั้น เมื่อคุณปรับแต่งการตั้งค่าเริ่มต้น innotop
ประกาศ แล้วเก็บการปรับแต่งไว้ในไฟล์ สิ่งนี้ทำให้ขนาดไฟล์ลดลง
ทำให้แก้ไขได้ง่ายขึ้นและทำให้การอัปเกรดง่ายขึ้น

ไฟล์การกำหนดค่าเป็นแบบอ่านอย่างเดียวเป็นค่าเริ่มต้น คุณสามารถแทนที่ด้วย "--write" ดู
"อ่านเท่านั้น".

ไฟล์คอนฟิกูเรชันถูกจัดเรียงเป็นส่วนๆ เช่น ไฟล์ INI เริ่มแต่ละส่วน
ด้วย [ชื่อส่วน] และลงท้ายด้วย [/ชื่อส่วน] รายการของแต่ละส่วนมี
ไวยากรณ์ที่แตกต่างกันขึ้นอยู่กับข้อมูลที่ต้องการจัดเก็บ คุณสามารถใส่ความคิดเห็นใน
ไฟล์; บรรทัดใดๆ ที่ขึ้นต้นด้วยอักขระ # จะเป็นความคิดเห็น innotop จะไม่อ่าน
ความคิดเห็น ดังนั้นจึงไม่เขียนกลับเข้าไปในไฟล์เมื่อออก ความคิดเห็นในการอ่าน-
เฉพาะไฟล์การกำหนดค่าเท่านั้นที่ยังคงมีประโยชน์

บรรทัดแรกในไฟล์คือหมายเลขเวอร์ชันของ innotop สิ่งนี้ทำให้ innotop สังเกตเห็นเมื่อ
รูปแบบไฟล์เข้ากันไม่ได้แบบย้อนกลับ และอัปเกรดได้อย่างราบรื่นโดยไม่ทำลาย
การกำหนดค่าที่กำหนดเอง

รายการต่อไปนี้อธิบายแต่ละส่วนของไฟล์การกำหนดค่าและข้อมูล it
ประกอบด้วย:

ทั่วไป
ส่วน 'ทั่วไป' ประกอบด้วยตัวแปรการกำหนดค่าส่วนกลางและตัวแปรที่อาจ
เป็นโหมดเฉพาะ แต่ไม่อยู่ในส่วนอื่นใด ไวยากรณ์เป็นเรื่องง่าย
คีย์=รายการค่า innotop เขียนความคิดเห็นเหนือแต่ละค่าเพื่อช่วยคุณแก้ไขไฟล์
ด้วยมือ.

S_ฟังก์ชั่น
ควบคุมการนำเสนอในโหมด S (ดู "S: ตัวแปรและสถานะ") ถ้า g ค่าคือ
กราฟ; ถ้า s ค่าจะเหมือนกับ vmstat; ถ้า p ค่าจะอยู่ในตารางสาระสำคัญ

S_set
ระบุชุดของตัวแปรที่จะแสดงในโหมด "S: Variables & Status" ดู
"ชุดตัวแปร".

auto_wipe_dl
สั่งให้ innotop ล้างการชะงักงันขนาดใหญ่โดยอัตโนมัติเมื่อสังเกตเห็น
เมื่อสิ่งนี้เกิดขึ้น คุณอาจสังเกตเห็นความล่าช้าเล็กน้อย ที่ขีดถัดไป คุณจะ
มักจะเห็นข้อมูลที่ถูกตัดทอนจากการหยุดชะงักขนาดใหญ่

ชุดอักขระ
ระบุชนิดของอักขระที่จะอนุญาตผ่าน "no_ctrl_char"
การเปลี่ยนแปลง วิธีนี้ช่วยป้องกันไม่ให้อักขระที่พิมพ์ไม่ได้สร้างความสับสนให้กับเทอร์มินัล
เมื่อคุณตรวจสอบการสืบค้นที่มีข้อมูลไบนารี เช่น รูปภาพ

ค่าเริ่มต้นคือ 'ascii' ซึ่งถือว่าสิ่งใดก็ตามที่อยู่นอก ASCII ปกติเป็นa
ตัวละครควบคุม ค่าอื่นๆ ที่อนุญาตคือ 'unicode' และ 'none' 'ไม่มี'
ถือว่าอักขระทุกตัวเป็นอักขระควบคุม ซึ่งอาจเป็นประโยชน์สำหรับการยุบ
ช่องข้อความทั้งหมดในแบบสอบถาม

cmd_filter
นี่คือคำนำหน้าที่กรองตัวแปรในโหมด "C: Command Summary"

สี
อนุญาตให้ทำสีเทอร์มินัลหรือไม่

cxn_หมดเวลา
ใน MySQL เวอร์ชัน 4.0.3 และใหม่กว่า ตัวแปรนี้ใช้เพื่อตั้งค่าการเชื่อมต่อของ
หมดเวลา ดังนั้น MySQL จะไม่ปิดการเชื่อมต่อหากไม่ได้ใช้งานมาระยะหนึ่ง
สิ่งนี้อาจเกิดขึ้นเนื่องจากไม่มีการตรวจสอบการเชื่อมต่อในโหมดใดโหมดหนึ่ง สำหรับ
ตัวอย่าง.

การแก้ปัญหา
ตัวเลือกนี้ทำให้เกิดข้อผิดพลาดที่ละเอียดยิ่งขึ้นและทำให้ innotop เข้มงวดมากขึ้นในบางส่วน
สถานที่. สามารถช่วยในการดีบักตัวกรองและโค้ดอื่น ๆ ที่ผู้ใช้กำหนด นอกจากนี้ยัง
ทำให้ innotop เขียนข้อมูลจำนวนมากไปที่ "debugfile" เมื่อเกิดการแครช

ดีบักไฟล์
ไฟล์ที่ innotop จะเขียนข้อมูลเมื่อมีการหยุดทำงาน ดู
"ไฟล์".

display_table_captions
innotop แสดงคำอธิบายตารางเหนือตารางส่วนใหญ่ ตัวแปรนี้ระงับหรือ
แสดงคำบรรยายบนตารางทั้งหมดทั่วโลก บางตารางมีการกำหนดค่าด้วย
คุณสมบัติ hide_caption ซึ่งแทนที่สิ่งนี้

ทั่วโลก
จะแสดงตัวแปรและสถานะ GLOBAL หรือไม่ innotop พยายามทำสิ่งนี้เท่านั้น
เซิร์ฟเวอร์ที่รองรับตัวเลือก GLOBAL เพื่อแสดงตัวแปรและแสดงสถานะ ใน
MySQL บางเวอร์ชัน คุณต้องมีสิทธิ์บางอย่างในการดำเนินการนี้ ถ้าคุณไม่มี
พวกเขา innotop จะไม่สามารถดึงข้อมูลตัวแปรและสถานะใด ๆ นี้
ตัวแปรการกำหนดค่าช่วยให้คุณเรียกใช้ innotop และดึงข้อมูลที่คุณทำได้
โดยไม่มีอภิสิทธิ์อันสูงส่ง

ฉันไม่สามารถค้นหาหรือทำซ้ำสถานการณ์ที่ไม่อนุญาต GLOBAL ได้อีกต่อไป แต่ฉัน
รู้ว่ามี

กราฟ_ชาร์
กำหนดอักขระที่จะใช้เมื่อวาดกราฟในโหมด "S: ตัวแปร & สถานะ"

header_highlight
กำหนดวิธีการเน้นส่วนหัวของคอลัมน์ ใช้งานได้ก็ต่อเมื่อ Term::ANSIColor is
มีอยู่. ค่าที่ถูกต้องคือ 'ตัวหนา' และ 'ขีดเส้นใต้'

ซ่อน_hdr
ซ่อนส่วนหัวของคอลัมน์ทั่วโลก

ระยะห่าง
ช่วงเวลาที่ innotop จะรีเฟรชข้อมูล (ขีด) ช่วงเวลาคือ
ใช้เป็นเวลานอนระหว่างเห็บ ดังนั้นช่วงเวลาที่แท้จริงจะแปรผัน
ขึ้นอยู่กับระยะเวลาที่ innotop ใช้ในการดึงและแสดงผลข้อมูล

ตัวแปรนี้ยอมรับเศษส่วนของวินาที

โหมด
โหมดที่ innotop ควรเริ่มต้น อาร์กิวเมนต์ที่อนุญาตจะเหมือนกับ
การกดแป้นที่เลือกโหมดแบบโต้ตอบ ดู "โหมด"

num_digits
จำนวนหลักที่จะแสดงเป็นตัวเลขเศษส่วนและเปอร์เซ็นต์ ช่วงของตัวแปรนี้
อยู่ระหว่าง 0 ถึง 9 และสามารถตั้งค่าได้โดยตรงจากโหมด "S: Variables & Status" ด้วย
ปุ่ม '+' และ '-' ใช้ใน "set_precision", "shorten" และ "percent"
การเปลี่ยนแปลง

num_status_sets
ควบคุมจำนวนชุดของตัวแปรสถานะที่จะแสดงใน pivoted "S: Variables &
โหมดสถานะ" นอกจากนี้ยังควบคุมจำนวนชุดเก่าของตัวแปร innotop keep
ในหน่วยความจำ ดังนั้นยิ่งตัวแปรนี้มีขนาดใหญ่เท่าใด innotop ก็ยิ่งใช้หน่วยความจำมากขึ้นเท่านั้น

Plugin_dir
ระบุตำแหน่งที่จะพบปลั๊กอิน ตามค่าเริ่มต้น innotop จะจัดเก็บปลั๊กอินใน
ไดเรกทอรีย่อย 'ปลั๊กอิน' ของไดเรกทอรีการกำหนดค่า innotop ของคุณ

อ่านเท่านั้น
กำหนดว่าไฟล์การกำหนดค่าเป็นแบบอ่านอย่างเดียวหรือไม่ ไม่สามารถตั้งค่าแบบโต้ตอบได้

show_cxn_errors
ทำให้เกิดข้อผิดพลาดในการเชื่อมต่อการพิมพ์ innotop กับ STDOUT ดู "การจัดการข้อผิดพลาด"

show_cxn_errors_in_tbl
สร้างข้อผิดพลาดในการเชื่อมต่อการแสดงผล innotop เป็นแถวในตารางแรกบนหน้าจอ ดู
"การจัดการข้อผิดพลาด".

แสดง_เปอร์เซ็นต์
เพิ่มอักขระ '%' หลังค่าที่ส่งคืนโดยการแปลง "เปอร์เซ็นต์"

แถบแสดงสถานะ
ควบคุมว่าจะแสดงแถบสถานะในจอแสดงผลหรือไม่ ดู "สถานะ INNOTOP"

ข้าม_innodb
ปิดใช้งานการดึงสถานะ SHOW INNODB ในกรณีที่เซิร์ฟเวอร์ของคุณไม่มี InnoDB
เปิดใช้งานและคุณไม่ต้องการให้ innotop พยายามดึงข้อมูล นี่ก็มีประโยชน์เช่นกัน
เมื่อคุณไม่มีสิทธิ์ SUPER จำเป็นต้องเรียกใช้ SHOW INNODB STATUS

สถานะ_inc
จะแสดงค่าสัมบูรณ์หรือค่าที่เพิ่มขึ้นสำหรับตัวแปรสถานะ เพิ่มขึ้น
ค่าจะถูกคำนวณเป็นการชดเชยจากค่าสุดท้ายที่ innotop เห็นสำหรับสิ่งนั้น
ตัวแปร. นี่คือการตั้งค่าทั่วโลก แต่อาจจะกลายเป็นโหมดเฉพาะที่
บางจุด. ตอนนี้รู้สึกเป็นเกียรติเล็กน้อยที่ไม่สอดคล้องกัน บางโหมดไม่จ่าย
ให้ความสนใจกับมัน

ปลั๊กอิน
ส่วนนี้ประกอบด้วยรายการชื่อแพ็คเกจของปลั๊กอินที่ใช้งานอยู่ หากมีปลั๊กอินอยู่
innotop จะเปิดใช้งาน ดู "ปลั๊กอิน" สำหรับข้อมูลเพิ่มเติม

ฟิลเตอร์
ส่วนนี้มีตัวกรองที่กำหนดโดยผู้ใช้ (ดู "ตัวกรอง") แต่ละบรรทัดอยู่ในรูปแบบ
filter_name=text='filter text' tbls='table list'

ข้อความตัวกรองคือข้อความของรหัสของรูทีนย่อย รายการตารางเป็นรายการของ
ตารางที่ตัวกรองสามารถใช้ โดยค่าเริ่มต้น ตัวกรองที่กำหนดโดยผู้ใช้จะนำไปใช้กับ
ตารางที่สร้างขึ้น แต่คุณสามารถแทนที่ได้ด้วยตนเองโดยแก้ไข
คำจำกัดความในไฟล์คอนฟิกูเรชัน

active_filters
ส่วนนี้เก็บตัวกรองที่ใช้งานอยู่ในแต่ละตาราง แต่ละบรรทัดอยู่ใน
รูปแบบ table_name=filter_list.

tbl_meta
ส่วนนี้เก็บคอลัมน์ที่ผู้ใช้กำหนดหรือคอลัมน์ที่ผู้ใช้กำหนดเอง (ดู "คอลัมน์") แต่ละ
บรรทัดอยู่ในรูปแบบ col_name=properties โดยที่คุณสมบัติคือ a
ชื่อ=รายการค่าที่ยกมา

การเชื่อมต่อ
ส่วนนี้เก็บการเชื่อมต่อเซิร์ฟเวอร์ที่คุณกำหนดไว้ แต่ละบรรทัดอยู่ใน
รูปแบบ name=properties โดยที่คุณสมบัติเป็นรายการ name=value คุณสมบัติ
เป็นตัวอธิบาย และสิ่งเดียวที่ได้รับการปฏิบัติเป็นพิเศษคือ 'ผ่าน' ซึ่งก็คือ
จะแสดงก็ต่อเมื่อตั้งค่า 'savepass' ส่วนนี้ของไฟล์การกำหนดค่าจะเป็น
ข้ามไปหากใช้ตัวเลือกบรรทัดคำสั่ง DSN ชื่อผู้ใช้หรือรหัสผ่าน ดู "เซิร์ฟเวอร์
การเชื่อมต่อ".

active_connections
ส่วนนี้ประกอบด้วยรายการการเชื่อมต่อที่ใช้งานในแต่ละโหมด แต่ละบรรทัดคือ
ในรูปแบบ mode_name=connection_list.

เซิร์ฟเวอร์_กลุ่ม
ส่วนนี้เก็บกลุ่มเซิร์ฟเวอร์ แต่ละบรรทัดอยู่ในรูปแบบ name=connection_list
ดู "กลุ่มเซิร์ฟเวอร์"

active_server_groups
ส่วนนี้มีรายชื่อกลุ่มเซิร์ฟเวอร์ที่ใช้งานอยู่ในแต่ละโหมด แต่ละบรรทัดคือ
ในรูปแบบ mode_name=server_group.

max_values_seen
ส่วนนี้มีค่าสูงสุดที่เห็นสำหรับตัวแปร ใช้เพื่อปรับขนาด
กราฟในโหมด "S: ตัวแปร & สถานะ" แต่ละบรรทัดอยู่ในรูปแบบ ชื่อ=ค่า

active_columns
ส่วนนี้เก็บรายการคอลัมน์ของตาราง แต่ละบรรทัดอยู่ในรูปแบบ
tbl_name=column_list. ดู "คอลัมน์"

sort_cols
ส่วนนี้มีคำจำกัดความการจัดเรียง แต่ละบรรทัดอยู่ในรูปแบบ
tbl_name=column_list. หากคอลัมน์ขึ้นต้นด้วย '-' คอลัมน์นั้นจะเรียงลำดับจากมากไปหาน้อย
ดู "การเรียงลำดับ"

มองเห็นได้_tables
ส่วนนี้กำหนดตารางที่จะมองเห็นได้ในแต่ละโหมด แต่ละบรรทัดอยู่ใน
รูปแบบ mode_name=table_list. ดู "ตาราง"

วาร์เซ็ต
ส่วนนี้กำหนดชุดตัวแปรสำหรับใช้ในโหมด "S: สถานะ & ตัวแปร" แต่ละบรรทัด
อยู่ในรูปแบบ name=variable_list. ดู "ชุดตัวแปร"

สี
ส่วนนี้กำหนดกฎการปรับสี แต่ละบรรทัดอยู่ในรูปแบบ
tbl_name=property_list. ดู "สี"

stmt_sleep_times
ส่วนนี้มีข้อความแจ้งเวลาพักเครื่อง แต่ละบรรทัดอยู่ในรูปแบบ
statement_name=sleep_time. ดู "S: คำชี้แจงเวลานอน"

group_by
ส่วนนี้ประกอบด้วยรายการคอลัมน์สำหรับนิพจน์ group_by ของตาราง แต่ละบรรทัดอยู่ใน
รูปแบบ tbl_name=column_list. ดู "การจัดกลุ่ม"

การปรับแต่ง


คุณสามารถปรับแต่ง innotop ได้มากมาย ตัวอย่างเช่น คุณสามารถ:

· เลือกตารางที่จะแสดงและเรียงลำดับอย่างไร

· เลือกคอลัมน์ที่จะอยู่ในตารางเหล่านั้น และสร้างคอลัมน์ใหม่

· กรองแถวที่แสดงด้วยตัวกรองในตัว ตัวกรองที่ผู้ใช้กำหนดเอง และตัวกรองด่วน
ฟิลเตอร์

· จัดเรียงแถวเพื่อใส่ข้อมูลสำคัญก่อนหรือจัดกลุ่มแถวที่เกี่ยวข้องกัน

· เน้นแถวด้วยสี

· ปรับแต่งการจัดตำแหน่ง ความกว้าง และการจัดรูปแบบของคอลัมน์ และนำการแปลงไปใช้
ไปยังคอลัมน์เพื่อแยกส่วนของค่าหรือจัดรูปแบบค่าตามที่คุณต้องการ (for
เช่น การย่อตัวเลขจำนวนมากให้เป็นหน่วยที่คุ้นเคย)

· ออกแบบนิพจน์ของคุณเองเพื่อแยกและรวมข้อมูลตามที่คุณต้องการ สิ่งนี้ให้คุณ
ความยืดหยุ่นไม่จำกัด

ทั้งหมดนี้และอื่น ๆ ได้อธิบายไว้ในส่วนต่อไปนี้

ตาราง
ตารางคือสิ่งที่คุณคาดหวัง: ชุดของคอลัมน์ นอกจากนี้ยังมีคุณสมบัติอื่นๆ
เช่น แคปชั่น ตัวกรอง กฎการเรียงลำดับ และกฎการกำหนดสีเป็นของตารางและ
จะกล่าวถึงในส่วนต่อไป

ภายใน meta-data ของตารางถูกกำหนดในโครงสร้างข้อมูลที่เรียกว่า %tbl_meta แฮชนี้
มีคำจำกัดความตารางในตัวทั้งหมด ซึ่งมีคำแนะนำเริ่มต้นจำนวนมากถึง
อินโนท็อป ข้อมูลเมตาประกอบด้วยคำอธิบายภาพ รายการคอลัมน์ที่ผู้ใช้กำหนดเอง a
รายการคอลัมน์ รายการคอลัมน์ที่มองเห็น รายการตัวกรอง กฎสี คอลัมน์เรียงลำดับ
รายการ ทิศทางการเรียงลำดับ และข้อมูลบางอย่างเกี่ยวกับแหล่งข้อมูลของตาราง ที่สุดของสิ่งนี้
ปรับแต่งได้ผ่านตัวแก้ไขตาราง (ดู "TABLE EDITOR")

คุณสามารถเลือกตารางที่จะแสดงโดยกดปุ่ม '$' ดู "โหมด" และ "ตาราง"

วงจรชีวิตของตารางมีดังนี้:

· แต่ละตารางเริ่มต้นด้วยแหล่งข้อมูล ซึ่งเป็นอาร์เรย์ของแฮช ดูด้านล่างสำหรับ
รายละเอียดเกี่ยวกับแหล่งข้อมูล

· แต่ละองค์ประกอบของแหล่งข้อมูลจะกลายเป็นแถวในตารางสุดท้าย

· สำหรับแต่ละองค์ประกอบในแหล่งข้อมูล innotop จะดึงค่าจากแหล่งที่มาและ
สร้างแถว แถวนี้เป็นแฮชอื่น ซึ่งขั้นตอนต่อไปจะเรียกว่า $set
ค่า innotop extracts ถูกกำหนดโดยคอลัมน์ของตาราง แต่ละคอลัมน์มี
รูทีนย่อยการแยก รวบรวมจากนิพจน์ (ดู "การแสดงออก") ผลลัพท์ที่ได้
แถวคือแฮชที่มีชื่อคีย์เหมือนกับชื่อคอลัมน์

· innotop กรองแถว ลบแถวที่ไม่ต้องการแสดง ดู
"ตัวกรอง".

· innotop เรียงลำดับแถว ดู "การเรียงลำดับ"

· innotop จัดกลุ่มแถวเข้าด้วยกัน ถ้าระบุไว้ ดู "การจัดกลุ่ม"

· innotop แต่งสีแถว ดู "สี"

· innotop แปลงค่าคอลัมน์ในแต่ละแถว ดู "การเปลี่ยนแปลง"

· innotop สามารถเลือก pivoting แถว (ดู "PIVOTING") จากนั้นกรองและจัดเรียง

· รูปแบบ innotop และปรับแถวให้เป็นตาราง ในระหว่างขั้นตอนนี้ innotop จะใช้
การจัดรูปแบบเพิ่มเติมเป็นค่าคอลัมน์ รวมทั้งการจัดตำแหน่ง สูงสุด และต่ำสุด
ความกว้าง innotop ยังทำการตรวจสอบข้อผิดพลาดขั้นสุดท้ายเพื่อให้แน่ใจว่าไม่มีการขัดข้องเนื่องจาก
ค่าที่ไม่ได้กำหนด innotop จะเพิ่มคำอธิบายภาพหากระบุไว้และตารางก็พร้อมที่จะ
พิมพ์.

วงจรชีวิตจะแตกต่างกันเล็กน้อยหากตารางถูกหมุนตามที่ระบุไว้ข้างต้น ขอชี้แจงว่า
ถ้าตารางถูก pivot กระบวนการจะแยก, จัดกลุ่ม, แปลง, pivot, กรอง, เรียงลำดับ,
สร้าง. หากไม่หมุน กระบวนการคือ แยก, กรอง, เรียงลำดับ, จัดกลุ่ม, สี,
แปลง, สร้าง. กระบวนการที่ซับซ้อนเล็กน้อยนี้ไม่สามารถจับคู่กับ SQL ได้ดี แต่
การหมุนรอบทำให้สิ่งต่าง ๆ ค่อนข้างซับซ้อน พูดคร่าวๆ กรอง และคัดแยก
เกิดขึ้นได้ช้าเท่าที่จำเป็นเพื่อให้เกิดผลสุดท้ายอย่างที่ท่านคาดไว้ แต่ให้เร็วที่สุดเท่าที่
เป็นไปได้อย่างมีประสิทธิภาพ

ตารางในตัวแต่ละตารางมีคำอธิบายด้านล่าง:

Adaptive_hash_index
แสดงข้อมูลเกี่ยวกับดัชนีแฮชแบบปรับได้ของ InnoDB แหล่งข้อมูล: "STATUS_VARIABLES"

buffer_pool
แสดงข้อมูลเกี่ยวกับบัฟเฟอร์พูลของ InnoDB แหล่งข้อมูล: "STATUS_VARIABLES"

cmd_สรุป
แสดงตัวแปรสถานะถ่วงน้ำหนัก แหล่งข้อมูล: "STATUS_VARIABLES"

การหยุดชะงัก_ล็อค
แสดงว่าล็อคใดถูกล็อคและรอโดยการชะงักงันที่ตรวจพบล่าสุด ข้อมูล
ที่มา: "DEADLOCK_LOCKS"

การหยุดชะงัก_ธุรกรรม
แสดงธุรกรรมที่เกี่ยวข้องกับการหยุดชะงักที่ตรวจพบล่าสุด แหล่งข้อมูล:
"DEADLOCK_TRANSACTIONS".

อธิบาย
แสดงผลลัพธ์ของ EXPLAIN แหล่งข้อมูล: "อธิบาย".

file_io_misc
แสดงข้อมูลเกี่ยวกับไฟล์ของ InnoDB และการทำงานของ I/O แหล่งข้อมูล:
"STATUS_VARIABLES"

fk_error
แสดงข้อมูลต่างๆ เกี่ยวกับข้อผิดพลาดของ Foreign Key ครั้งล่าสุดของ InnoDB แหล่งข้อมูล:
"STATUS_VARIABLES"

innodb_locks
แสดงการล็อค InnoDB แหล่งข้อมูล: "INNODB_LOCKS"

innodb_transactions
แสดงข้อมูลเกี่ยวกับธุรกรรมปัจจุบันของ InnoDB แหล่งข้อมูล:
"INNODB_TRANSACTIONS".

insert_buffers
แสดงข้อมูลเกี่ยวกับบัฟเฟอร์การแทรกของ InnoDB แหล่งข้อมูล: "STATUS_VARIABLES"

io_threads
แสดงข้อมูลเกี่ยวกับเธรด I/O ของ InnoDB แหล่งข้อมูล: "IO_THREADS"

log_statistics
แสดงข้อมูลเกี่ยวกับระบบการบันทึกของ InnoDB แหล่งข้อมูล: "STATUS_VARIABLES"

master_status
แสดงสถานะต้นแบบการจำลองแบบ แหล่งข้อมูล: "STATUS_VARIABLES"

open_tables
แสดงตารางที่เปิดอยู่ แหล่งข้อมูล: "OPEN_TABLES"

page_statistics
แสดงสถิติหน้า InnoDB แหล่งข้อมูล: "STATUS_VARIABLES"

รอดำเนินการ_io
แสดง InnoDB ที่รอดำเนินการ I/O แหล่งข้อมูล: "STATUS_VARIABLES"

รายชื่อกระบวนการ
แสดงกระบวนการ MySQL ปัจจุบัน (เธรด/การเชื่อมต่อ) แหล่งข้อมูล: "PROCESSLIST"

q_ส่วนหัว
แสดงค่าสถานะต่างๆ แหล่งข้อมูล: "STATUS_VARIABLES"

row_operation_misc
แสดงข้อมูลเกี่ยวกับการดำเนินการแถวของ InnoDB แหล่งข้อมูล: "STATUS_VARIABLES"

row_operations
แสดงข้อมูลเกี่ยวกับการดำเนินการแถวของ InnoDB แหล่งข้อมูล: "STATUS_VARIABLES"

สัญญาณ
แสดงข้อมูลเกี่ยวกับสัญญาณและ mutexes ของ InnoDB แหล่งข้อมูล: "STATUS_VARIABLES"

ทาส_io_สถานะ
แสดงข้อมูลเกี่ยวกับเธรด I/O รอง แหล่งข้อมูล: "STATUS_VARIABLES"

ทาส_sql_status
แสดงข้อมูลเกี่ยวกับเธรด SQL รอง แหล่งข้อมูล: "STATUS_VARIABLES"

t_header
แสดงค่าสถานะ InnoDB ต่างๆ แหล่งข้อมูล: "STATUS_VARIABLES"

var_status
แสดงข้อมูลที่ผู้ใช้กำหนดค่าได้ แหล่งข้อมูล: "STATUS_VARIABLES"

รอ_array
แสดงข้อมูลเกี่ยวกับอาร์เรย์รอ OS ของ InnoDB แหล่งข้อมูล: "OS_WAIT_ARRAY"

คอลัมน์
คอลัมน์เป็นของตาราง คุณสามารถเลือกคอลัมน์ของตารางได้โดยกดปุ่ม '^' ซึ่ง
เริ่ม "TABLE EDITOR" และให้คุณเลือกและแก้ไขคอลัมน์ได้ กด 'e' จากภายใน
ตัวแก้ไขตารางช่วยให้คุณแก้ไขคุณสมบัติของคอลัมน์ได้:

· hdr: ส่วนหัวของคอลัมน์ ปรากฏในแถวแรกของตาราง

· เพียง: เหตุผล '-' หมายถึงชิดซ้าย และ '' หมายถึงชิดขวา เช่นเดียวกับ
ด้วยรหัสการจัดรูปแบบ printf (ไม่ใช่เรื่องบังเอิญ)

· ธันวา: จะจัดแนวคอลัมน์เพิ่มเติมบนจุดทศนิยมหรือไม่

· num: ไม่ว่าคอลัมน์จะเป็นตัวเลขหรือไม่ สิ่งนี้ส่งผลต่อวิธีการจัดเรียงค่า (คำศัพท์หรือ
เป็นตัวเลข)

· label: บันทึกย่อเล็กๆ น้อยๆ เกี่ยวกับคอลัมน์ ซึ่งปรากฏในไดอะล็อกที่ช่วยผู้ใช้
เลือกคอลัมน์

· src: นิพจน์ที่ innotop ใช้เพื่อดึงข้อมูลของคอลัมน์จากแหล่งที่มา (ดู
"แหล่งข้อมูล") ดู "การแสดงออก" สำหรับข้อมูลเพิ่มเติมเกี่ยวกับนิพจน์

· minw: ระบุความกว้างขั้นต่ำในการแสดงผล ซึ่งช่วยให้จอแสดงผลมีเสถียรภาพ ซึ่ง
ทำให้อ่านง่ายขึ้นหากข้อมูลมีการเปลี่ยนแปลงบ่อยครั้ง

· maxw: คล้ายกับ minw

· trans: รายการการแปลงคอลัมน์ ดู "การเปลี่ยนแปลง"

· agg: ฟังก์ชันการรวม ดู "การจัดกลุ่ม" ค่าเริ่มต้นคือ "แรก"

· agonly: ควบคุมว่าคอลัมน์จะแสดงเฉพาะเมื่อมีการเปิดใช้งานการจัดกลุ่มในตารางหรือไม่
(ดู "การจัดกลุ่ม") โดยค่าเริ่มต้น สิ่งนี้ถูกปิดใช้งาน ซึ่งหมายความว่าคอลัมน์จะเป็น .เสมอ
แสดงโดยค่าเริ่มต้น ไม่ว่าจะเปิดใช้งานการจัดกลุ่มหรือไม่ หากมีการตั้งค่า aggonly ของคอลัมน์
true คอลัมน์จะปรากฏขึ้นเมื่อคุณสลับการจัดกลุ่มในตาราง หลายคอลัมน์
ถูกตั้งค่าในลักษณะนี้ เช่น คอลัมน์การนับใน "processlist" และ "innodb_transactions"
ดังนั้นคุณจึงไม่เห็นการนับเมื่อไม่ได้เปิดใช้งานการจัดกลุ่ม แต่คุณจะทำเมื่อเปิดอยู่

กรอง
ตัวกรองลบแถวออกจากจอแสดงผล พวกเขาทำงานเหมือนกับส่วนคำสั่ง WHERE ใน SQL
innotop มีตัวกรองในตัวหลายตัว ซึ่งลบข้อมูลที่ไม่เกี่ยวข้องเช่น inactive
แบบสอบถาม แต่คุณสามารถกำหนดของคุณเองได้เช่นกัน innotop ยังให้คุณสร้างตัวกรองด่วน
ซึ่งไม่ได้รับการบันทึกลงในไฟล์กำหนดค่า และเป็นเพียงวิธีง่ายๆ ในการดูอย่างรวดเร็ว
บางแถวเท่านั้น

คุณสามารถเปิดหรือปิดใช้งานตัวกรองในตารางใดก็ได้ กดปุ่ม '%' (ช่วยจำ: % ดู
เช่นการกรองเส้นระหว่างวงกลมสองวง) และเลือกตารางที่คุณต้องการ
ตัวกรองถ้าถาม จากนั้นคุณจะเห็นรายการตัวกรองที่เป็นไปได้และรายการตัวกรอง
ปัจจุบันเปิดใช้งานสำหรับตารางนั้น พิมพ์ชื่อตัวกรองที่คุณต้องการใช้แล้วกด
เข้าสู่

ผู้ใช้กำหนด กรอง

หากคุณพิมพ์ชื่อที่ไม่มีอยู่ innotop จะแจ้งให้คุณสร้างตัวกรอง
ตัวกรองสามารถสร้างได้ง่ายหากคุณรู้ Perl และไม่ยากหากคุณไม่ทำ คุณกำลังทำอะไร
กำลังสร้างรูทีนย่อยที่คืนค่า จริง หากควรแสดงแถว แถวคือ a
การอ้างอิงแฮชส่งผ่านไปยังรูทีนย่อยของคุณเป็น $set

ตัวอย่างเช่น สมมติว่าคุณต้องการกรองตารางรายการกระบวนการ เพื่อให้คุณเห็นเฉพาะข้อความค้นหาที่
วิ่งเกินห้านาทีแล้ว พิมพ์ชื่อใหม่สำหรับตัวกรองของคุณและเมื่อ
ถามหารูทีนย่อย กด TAB เพื่อเริ่มการเติมข้อความอัตโนมัติของเทอร์มินัล
คุณจะเห็นชื่อคอลัมน์ในตาราง "รายการกระบวนการ" (โดยทั่วไปแล้ว innotop จะพยายาม
ช่วยคุณด้วยรายการเติมข้อความอัตโนมัติ) คุณต้องการกรองในคอลัมน์ 'เวลา' พิมพ์
ข้อความ "$set->{time} > 300" เพื่อคืนค่าเป็นจริงเมื่อข้อความค้นหามีอายุมากกว่า XNUMX นาที
นั่นคือทั้งหมดที่คุณต้องทำ

กล่าวอีกนัยหนึ่ง โค้ดที่คุณกำลังพิมพ์นั้นล้อมรอบด้วยบริบทโดยนัย ซึ่งดูเหมือน
อย่างนี้:

ตัวกรองย่อย {
ของฉัน ( $set ) = @_;
#รหัสของคุณที่นี่
}

หากตัวกรองของคุณใช้งานไม่ได้ หรือมีอย่างอื่นทำงานผิดปกติ คุณอาจ
ได้ทำข้อผิดพลาดในตัวกรองของคุณ และ innotop ก็ตรวจจับข้อผิดพลาดอย่างเงียบๆ ลอง
การเปิดใช้งาน "debug" เพื่อให้ innotop เกิดข้อผิดพลาดแทน

ตัวกรองอย่างรวดเร็ว

ตัวกรองด่วนของ innotop เป็นทางลัดในการสร้างตัวกรองชั่วคราวที่ไม่คงอยู่
เมื่อคุณรีสตาร์ท innotop หากต้องการสร้างตัวกรองด่วน ให้กดปุ่ม '/' อินโนท็อปจะ
แจ้งให้คุณทราบชื่อคอลัมน์และข้อความตัวกรอง อีกครั้ง คุณสามารถใช้การเติมข้อความอัตโนมัติใน
ชื่อคอลัมน์ ข้อความตัวกรองอาจเป็นเพียงข้อความที่คุณต้องการ "ค้นหา" สำหรับ
ตัวอย่าง เพื่อกรองตาราง "รายการกระบวนการ" ในแบบสอบถามที่อ้างอิงถึงตารางผลิตภัณฑ์
พิมพ์ '/' ตามด้วย 'ข้อมูลผลิตภัณฑ์'

ข้อความตัวกรองอาจเป็นนิพจน์ทั่วไปของ Perl ก็ได้ แต่แน่นอนว่าเป็นตัวอักษร
สตริงเช่น 'ผลิตภัณฑ์' ทำงานได้ดีเหมือนนิพจน์ทั่วไป

เบื้องหลัง innotop รวบรวม Quick-Filter เป็นฟิลเตอร์ที่ติดแท็กพิเศษนั่นคือ
อย่างอื่นเหมือนตัวกรองอื่นๆ มันไม่ได้บันทึกลงในไฟล์การกำหนดค่า

หากต้องการล้างตัวกรองอย่างรวดเร็ว ให้กดปุ่ม '\' และ innotop จะล้างตัวกรองทั้งหมดพร้อมกัน

การเรียงลำดับ
innotop มีค่าเริ่มต้นในตัวที่เหมาะสมเพื่อจัดเรียงแถวที่สำคัญที่สุดไปที่ด้านบนสุดของ
ตาราง. เช่นเดียวกับอย่างอื่นใน innotop คุณสามารถปรับแต่งวิธีการจัดเรียงตารางได้

ในการเริ่มกล่องโต้ตอบการจัดเรียง ให้เริ่ม "TABLE EDITOR" ด้วยปุ่ม '^' เลือกตาราง if
ที่จำเป็นและกดปุ่ม 's' คุณจะเห็นรายการคอลัมน์ที่คุณสามารถใช้ในการ sort
นิพจน์และนิพจน์การเรียงลำดับปัจจุบัน หากมี ป้อนรายการคอลัมน์ที่คุณ
ต้องการเรียงลำดับแล้วกด Enter หากคุณต้องการกลับการจัดเรียง ให้เติมชื่อคอลัมน์นำหน้าด้วย a
เครื่องหมายลบ ตัวอย่างเช่น หากคุณต้องการจัดเรียงตามคอลัมน์จากน้อยไปหามาก ให้คอลัมน์ b
จากมากไปน้อย พิมพ์ 'a -b' คุณยังสามารถเพิ่ม + ข้างหน้าคอลัมน์ที่คุณต้องการได้อย่างชัดเจน
เรียงลำดับจากน้อยไปมาก แต่ไม่จำเป็น

บางโหมดมีคีย์ที่แมปเพื่อเปิดกล่องโต้ตอบนี้โดยตรง และเพื่อย้อนกลับการเรียงลำดับอย่างรวดเร็ว
ทิศทาง. กด '?' ตามปกติเพื่อดูว่าคีย์ใดถูกแมปในโหมดใดๆ

การจัดกลุ่ม
innotop สามารถจัดกลุ่มหรือรวมแถวเข้าด้วยกัน (ใช้เงื่อนไขแทนกันได้) นี้
ค่อนข้างคล้ายกับส่วนคำสั่ง SQL GROUP BY คุณสามารถระบุเพื่อจัดกลุ่มในบางคอลัมน์
หรือถ้าคุณไม่ระบุ แถวทั้งชุดจะถือเป็นกลุ่มเดียว นี่คือ
ค่อนข้างเหมือนกับ SQL จนถึงตอนนี้ แต่ต่างจาก SQL คุณสามารถเลือกคอลัมน์ที่ไม่ได้จัดกลุ่มได้ อินโนท็อป
รวมทุกคอลัมน์จริงๆ หากคุณไม่ได้ระบุฟังก์ชันการจัดกลุ่มไว้อย่างชัดเจน
ค่าเริ่มต้นคือ 'แรก' โดยพื้นฐานแล้วสะดวกดังนั้นคุณจึงไม่ต้องระบุ an
ฟังก์ชันรวมสำหรับทุกคอลัมน์ที่คุณต้องการในผลลัพธ์

คุณสามารถสลับการจัดกลุ่มบนโต๊ะได้อย่างรวดเร็วด้วยปุ่ม '=' ซึ่งจะสลับการรวมกลุ่ม
คุณสมบัติ. คุณสมบัตินี้ไม่คงอยู่ในไฟล์ปรับแต่ง

คอลัมน์ที่ใช้จัดกลุ่มตารางจะถูกระบุในคุณสมบัติ group_by เมื่อไหร่
คุณเปิดการจัดกลุ่ม innotop วางคอลัมน์ group_by ที่ด้านซ้ายสุดของตาราง
แม้ว่าจะไม่ควรปรากฏให้เห็นก็ตาม คอลัมน์ที่เหลือจะปรากฏใน
สั่งซื้อหลังจากพวกเขา

สองตารางมีรายการ group_by เริ่มต้นและมีคอลัมน์การนับอยู่ภายใน: "processlist" และ
"innodb_transactions". การจัดกลุ่มเป็นไปตามการเชื่อมต่อและสถานะ คุณจึงมองเห็นได้อย่างรวดเร็ว
จำนวนการสืบค้นหรือธุรกรรมที่อยู่ในสถานะที่กำหนดในแต่ละเซิร์ฟเวอร์ที่คุณกำลังตรวจสอบ
คอลัมน์เวลาจะรวมกันเป็นผลรวม คอลัมน์อื่น ๆ จะถูกปล่อยไว้ที่ 'แรก' เริ่มต้น
การรวมตัว

โดยค่าเริ่มต้น ตารางที่แสดงในโหมด "S: ตัวแปร & สถานะ" ยังใช้การจัดกลุ่มเพื่อให้คุณทำได้
ตรวจสอบตัวแปรและสถานะในหลายเซิร์ฟเวอร์ ฟังก์ชันการรวมเริ่มต้นใน
โหมดนี้คือ 'เฉลี่ย'

ฟังก์ชันการจัดกลุ่มที่ถูกต้องถูกกำหนดไว้ในแฮช %agg_funcs ได้แก่

เป็นครั้งแรก
ส่งกลับองค์ประกอบแรกในกลุ่ม

นับ
ส่งกลับจำนวนองค์ประกอบในกลุ่มรวมถึงองค์ประกอบที่ไม่ได้กำหนดเช่น
COUNT(*) ของ SQL

เฉลี่ย ส่งกลับค่าเฉลี่ยขององค์ประกอบที่กำหนดไว้ในกลุ่ม

sum ส่งกลับผลรวมขององค์ประกอบในกลุ่ม

นี่คือตัวอย่างการจัดกลุ่มในที่ทำงาน สมมติว่าคุณมีเซิร์ฟเวอร์ที่ยุ่งมากซึ่งมีหลายร้อย
ของคนรู้จักที่เปิดอยู่ และคุณต้องการดูว่ามีคนรู้จักกี่คนอยู่ในสถานะใด โดยใช้
กฎการจัดกลุ่มในตัว คุณสามารถกด 'Q' เพื่อเข้าสู่โหมด "Q: Query List" กด '='
เพื่อสลับการจัดกลุ่ม (หากจำเป็น ให้เลือกตาราง "รายการกระบวนการ" เมื่อได้รับแจ้ง)

จอแสดงผลของคุณอาจมีลักษณะดังนี้:

รายการสืบค้น (สำหรับความช่วยเหลือ) localhost, 32:33, 0.11 QPS, 1thd, 5.0.38-log

CXN Cmd Cnt ID ผู้ใช้โฮสต์เวลา Query
localhost แบบสอบถาม 49 12933 webusr localhost 19:38 SELECT * FROM
localhost กำลังส่ง Da 23 2383 webusr localhost 12:43 SELECT col1,
localhost สลีป 120 140 webusr localhost 5:18:12
localhost สถิติ 12 19213 webusr localhost 01:19 SELECT * FROM

เป็นภาพที่น่าเป็นห่วงจริงๆ คุณมีการเชื่อมต่อที่ไม่ได้ใช้งานจำนวนมาก (สลีป)
และบางการเชื่อมต่อดำเนินการค้นหา (แบบสอบถามและการส่งข้อมูล) ไม่เป็นไร แต่คุณ
ยังมีสถานะสถิติอีกมาก ใช้เวลารวมกันเป็นนาที แปลว่า
เครื่องมือเพิ่มประสิทธิภาพการสืบค้นกำลังประสบปัญหาในการเพิ่มประสิทธิภาพคำสั่งของคุณ บางสิ่งบางอย่างคือ
ผิด; โดยปกติจะใช้เวลามิลลิวินาทีในการเพิ่มประสิทธิภาพการสืบค้นข้อมูล คุณอาจไม่เคยเห็น
รูปแบบนี้หากคุณไม่ได้ดูการเชื่อมต่อของคุณโดยรวม (นี่คือการแต่งหน้า
ตัวอย่างแต่สามารถเกิดขึ้นได้ในชีวิตจริง)

การหมุน
innotop สามารถหมุนตารางเพื่อการแสดงผลที่กะทัดรัดยิ่งขึ้น คล้ายกับ Pivot Table ใน a
สเปรดชีต (เรียกอีกอย่างว่าครอสแท็บ) การหมุนตารางทำให้คอลัมน์เป็นแถว สมมติ
คุณเริ่มต้นด้วยตารางนี้:

ฟูบาร์
-
1 3
2 4

หลังจากหมุนแล้ว ตารางจะมีลักษณะดังนี้:

ชื่อ set0 set1
-
ฟู 1 2
แถบ 3 4

เพื่อให้ได้ผลลัพธ์ที่สมเหตุสมผล คุณอาจต้องจัดกลุ่มและหมุน innotop ปัจจุบัน
ทำสิ่งนี้สำหรับโหมด "S: ตัวแปร & สถานะ"

สี
ตามค่าเริ่มต้น innotop จะไฮไลต์แถวด้วยสี คุณจึงเห็นได้อย่างรวดเร็วว่าแถวไหน
สำคัญกว่า. คุณสามารถกำหนดกฎการปรับสีและเพิ่มกฎของคุณเองลงในตารางใดก็ได้
เปิดตัวแก้ไขตารางด้วยปุ่ม '^' เลือกตารางหากต้องการ และกด 'o' เพื่อเปิด
กล่องโต้ตอบตัวแก้ไขสี

ไดอะล็อกตัวแก้ไขสีจะแสดงกฎที่ใช้กับตาราง ตามลำดับคือ
ประเมิน แต่ละแถวจะถูกประเมินโดยเทียบกับกฎแต่ละข้อเพื่อดูว่ากฎตรงกับแถวหรือไม่ ถ้า
เป็นเช่นนั้น แถวได้รับสีที่ระบุ และไม่มีการประเมินกฎเพิ่มเติม กฎระเบียบ
มีลักษณะดังต่อไปนี้:

state eq ล็อคสีดำ on_red
cmd eq นอนสีขาว
ผู้ใช้ eq ระบบ ผู้ใช้ สีขาว
cmd eq เชื่อมต่อสีขาว
cmd eq Binlog Dump สีขาว
เวลา > 600 สีแดง
เวลา > 120 สีเหลือง
เวลา > 60 สีเขียว
เวลา > 30 cyan

นี่เป็นกฎเริ่มต้นที่ตั้งไว้สำหรับตาราง "รายการกระบวนการ" ลำดับความสำคัญเหล่านี้
กฎทำให้ข้อความค้นหาที่ถูกล็อกเป็นสีดำบนพื้นหลังสีแดง การเชื่อมต่อ "เป็นสีเทา" จาก
การจำลองแบบและการนอนหลับ และทำให้การสืบค้นเปลี่ยนจากสีฟ้าเป็นสีแดงขณะเรียกใช้
อีกต่อไป

(ด้วยเหตุผลบางประการ รหัสสี ANSI "สีขาว" จริงๆ แล้วเป็นสีเทาอ่อน เครื่องปลายทางของคุณคือ
การแสดงผลอาจแตกต่างกันไป ทดลองหาสีที่คุณชอบ)

คุณสามารถใช้การกดแป้นเพื่อย้ายกฎขึ้นและลง ซึ่งจะจัดลำดับความสำคัญใหม่ คุณ
ยังสามารถลบกฎและเพิ่มกฎใหม่ได้ หากคุณเพิ่มกฎใหม่ innotop จะแจ้งให้คุณ
คอลัมน์, ตัวดำเนินการสำหรับการเปรียบเทียบ, ค่าที่จะเปรียบเทียบคอลัมน์,
และสีที่จะกำหนดหากกฎตรงกัน มีการกรอกอัตโนมัติและพร้อมท์ที่แต่ละ
ขั้นตอน

ค่าในขั้นตอนที่สามจะต้องถูกยกมาอย่างถูกต้อง innotop ไม่พยายามอ้าง
ค่าเพราะไม่รู้ว่าควรปฏิบัติต่อค่าเป็นสตริงหรือa
ตัวเลข. หากคุณต้องการเปรียบเทียบคอลัมน์กับสตริง เช่น ในประโยคแรก
กฎข้างต้น คุณควรป้อน 'ล็อก' ล้อมรอบด้วยเครื่องหมายคำพูด หากคุณได้รับข้อความแสดงข้อผิดพลาด
เกี่ยวกับคำเปล่า คุณน่าจะยกมาบ้าง

การแสดงออก
นิพจน์เป็นหัวใจสำคัญของการทำงานของ innotop และเป็นสิ่งที่ช่วยให้คุณขยายได้
innotop ตามที่คุณต้องการ เรียกคืนวงจรชีวิตของตารางที่อธิบายใน "TABLES" นิพจน์คือ
ใช้ในขั้นตอนแรกสุด ซึ่งจะดึงค่าจากแหล่งข้อมูลเพื่อสร้างแถว

ทำได้โดยการเรียกรูทีนย่อยสำหรับแต่ละคอลัมน์ ส่งผ่านชุดข้อมูลต้นทาง a
ชุดของค่าปัจจุบันและชุดของค่าก่อนหน้า ทั้งหมดนี้มีความจำเป็น ดังนั้น
รูทีนย่อยสามารถคำนวณสิ่งต่าง ๆ เช่นความแตกต่างระหว่างขีดนี้กับก่อนหน้านี้
เห็บ

รูทีนย่อยที่ดึงข้อมูลจากชุดจะถูกคอมไพล์จากนิพจน์ นี้
ให้พลังมากกว่าแค่การตั้งชื่อค่าเพื่อเติมคอลัมน์ เพราะมัน
อนุญาตให้คำนวณค่าของคอลัมน์จากข้อมูลที่จำเป็น แต่หลีกเลี่ยง
ต้องเขียนโค้ด Perl ที่ซับซ้อนและยาว

innotop เริ่มต้นด้วยสตริงข้อความที่ดูง่ายเหมือนชื่อค่าหรือ as
ซับซ้อนเหมือนนิพจน์ Perl ที่เต็มเปี่ยม จะดูที่โทเค็น 'คำเปล่า' แต่ละรายการใน
string และตัดสินใจว่าควรจะเป็นคีย์ในแฮช $set หรือไม่ คำเปล่าคือ an
มูลค่าที่ไม่มีเครื่องหมายอัญประกาศซึ่งไม่ได้ล้อมรอบด้วยสิ่งที่เป็นรหัสเช่นเครื่องหมายดอลลาร์หรือหยิก
วงเล็บ หาก innotop ตัดสินใจว่าแบร์เวิร์ดไม่ใช่ฟังก์ชันหรือโค้ด Perl ที่ถูกต้องอื่นๆ
มันแปลงเป็นการเข้าถึงแฮช หลังจากประมวลผลสตริงทั้งหมดแล้ว innotop คอมไพล์
รูทีนย่อยดังนี้:

ย่อย compute_column_value {
ของฉัน ( $set, $cur, $pre ) = @_;
my $val = # EXPANDED STRING ไปที่นี่
ส่งคืน $val;
}

นี่คือตัวอย่างที่เป็นรูปธรรม นำมาจากตารางส่วนหัว "q_header" ในโหมด "Q: Query List"
นิพจน์นี้จะคำนวณค่าของคอลัมน์ qps หรือ Queries Per Second จากค่า
ค่าที่ส่งคืนโดย SHOW STATUS:

คำถาม/Uptime_hires

innotop ตัดสินใจว่าทั้งสองคำเป็นคำเปล่าและแปลงนิพจน์นี้เป็น
รหัส Perl ต่อไปนี้:

$set->{Questions}/$set->{Uptime_hires}

เมื่อล้อมรอบด้วยส่วนที่เหลือของรหัสของรูทีนย่อย นี่คือ Perl that . ที่สามารถเรียกทำงานได้
คำนวณค่าการสืบค้นต่อวินาทีที่มีความละเอียดสูง

อาร์กิวเมนต์ของรูทีนย่อยมีชื่อว่า $set, $cur และ $pre ในกรณีส่วนใหญ่ $set และ
$cur จะเป็นค่าเดียวกัน อย่างไรก็ตาม หากตั้งค่า "status_inc" ไว้ $cur จะไม่เหมือนเดิม
เป็น $set เนื่องจาก $set จะมีค่าที่เป็นส่วนต่างส่วนเพิ่มอยู่แล้ว
ระหว่าง $cur และ $pre

ทุกคอลัมน์ใน innotop คำนวณโดยรูทีนย่อยที่คอมไพล์ในลักษณะเดียวกัน มี
ไม่มีความแตกต่างระหว่างคอลัมน์ในตัวของ innotop และคอลัมน์ที่ผู้ใช้กำหนด สิ่งนี้ทำให้
สิ่งที่สอดคล้องและคาดเดาได้

การแปลงร่าง
การแปลงจะเปลี่ยนวิธีการแสดงค่า ตัวอย่างเช่น สามารถหาจำนวน
วินาที และแสดงในรูปแบบ H:M:S มีการกำหนดการแปลงต่อไปนี้:

กระชับ
เพิ่มเครื่องหมายจุลภาคให้กับตัวเลขขนาดใหญ่ทุกๆ ตำแหน่งทศนิยมสามตำแหน่ง

ดูลินท์_to_int
ยอมรับจำนวนเต็มที่ไม่ได้ลงนามสองตัวและแปลงเป็นค่าลองลองเดียว นี่คือ
มีประโยชน์สำหรับการดำเนินการบางอย่างกับ InnoDB ซึ่งใช้จำนวนเต็มสองตัวเป็นธุรกรรม
ตัวระบุ ตัวอย่างเช่น

no_ctrl_char
ลบอักขระควบคุมที่ยกมาออกจากค่า สิ่งนี้ได้รับผลกระทบจาก "ชุดอักขระ"
ตัวแปรการกำหนดค่า

การแปลงนี้ดำเนินการภายในสตริงที่ยกมาเท่านั้น ตัวอย่างเช่น ค่าเป็น SET
ข้อในคำสั่ง UPDATE มันจะไม่เปลี่ยนแปลงคำสั่ง UPDATE แต่จะ
ยุบสตริงที่ยกมาเป็น [BINARY] หรือ [TEXT] ขึ้นอยู่กับชุดอักขระ

เปอร์เซ็นต์
แปลงตัวเลขเป็นเปอร์เซ็นต์โดยการคูณด้วยสอง จัดรูปแบบด้วย
ตัวเลข "num_digits" หลังจุดทศนิยม และเลือกเพิ่มเครื่องหมายเปอร์เซ็นต์ (ดู
"show_percent")

วินาที_to_time
จัดรูปแบบจำนวนวินาทีเป็นเวลาในรูปแบบวัน+ชั่วโมง:นาที:วินาที

set_precision
จัดรูปแบบตัวเลขด้วยจำนวนหลัก "num_digits" หลังจุดทศนิยม

ร่น
จัดรูปแบบตัวเลขเป็นหน่วย 1024 (k/M/G/T) และมีจำนวนหลักเป็น "num_digits"
หลังจุดทศนิยม

ตาราง บรรณาธิการ
ตัวแก้ไขตาราง innotop ให้คุณปรับแต่งตารางด้วยการกดแป้น คุณเริ่มตาราง
แก้ไขด้วยปุ่ม '^' หากมีตารางมากกว่าหนึ่งตารางบนหน้าจอ จะแจ้งให้คุณทราบ
เพื่อเลือกหนึ่งในนั้น เมื่อคุณทำเสร็จแล้ว innotop จะแสดงให้คุณเห็นดังนี้:

การแก้ไขข้อกำหนดตารางสำหรับบัฟเฟอร์พูล กด ? เพื่อขอความช่วยเหลือ q เพื่อเลิก

ชื่อ hdr label src
การเชื่อมต่อ cxn CXN ซึ่ง cxn
buf_pool_size ขนาด ขนาดพูลบัฟเฟอร์ IB_bp_buf_poo
buf_free ฟรี Bufs บัฟเฟอร์ฟรีใน b IB_bp_buf_fre
pages_total หน้า หน้า รวม IB_bp_pages_t
pages_modified หน้าสกปรก แก้ไขหน้า (IB_bp_pages_m . สกปรก)
buf_pool_hit_rate อัตราการเข้าชม อัตราการเข้าชมพูลบัฟเฟอร์ IB_bp_buf_poo
Total_mem_alloc หน่วยความจำ หน่วยความจำทั้งหมดจัดสรร IB_bp_total_m
add_pool_alloc เพิ่มพูล พูลเพิ่มเติม alloca IB_bp_add_poo

บรรทัดแรกแสดงตารางที่คุณกำลังแก้ไข และเตือนให้คุณกด '?' อีกครั้ง สำหรับ
รายการการแมปที่สำคัญ ส่วนที่เหลือเป็นการแสดงตารางของคอลัมน์ของตาราง
เพราะนั่นอาจเป็นสิ่งที่คุณกำลังพยายามแก้ไข อย่างไรก็ตาม คุณสามารถแก้ไขได้มากกว่าแค่
คอลัมน์ของตาราง หน้าจอนี้สามารถเริ่มตัวแก้ไขตัวกรอง ตัวแก้ไขกฎสี และอื่นๆ

แต่ละแถวในจอแสดงผลจะแสดงคอลัมน์เดียวในตารางที่คุณกำลังแก้ไข พร้อมด้วย a
คุณสมบัติสองสามอย่าง เช่น ส่วนหัวและนิพจน์แหล่งที่มา (ดู "การแสดงออก")

การจับคู่คีย์เป็นแบบ Vim เช่นเดียวกับที่อื่นๆ การกด 'j' และ 'k' จะย้าย
เน้นขึ้นหรือลง จากนั้น คุณสามารถ (ง) ลบหรือ (จ) แก้ไขคอลัมน์ที่ไฮไลต์ได้ คุณสามารถ
(ก) เพิ่มคอลัมน์ลงในตารางด้วย อันที่จริงนี่เพิ่งเปิดใช้งานคอลัมน์ใดคอลัมน์หนึ่งแล้ว
กำหนดไว้สำหรับตาราง มันแจ้งให้คุณเลือกจากคอลัมน์ที่มีอยู่แต่ไม่ใช่
ที่แสดงอยู่ในปัจจุบัน สุดท้าย คุณสามารถจัดลำดับคอลัมน์ใหม่ด้วยปุ่ม '+' และ '-'

คุณสามารถทำได้มากกว่าแค่แก้ไขคอลัมน์ด้วยตัวแก้ไขตาราง คุณยังสามารถแก้ไขอื่นๆ ได้อีกด้วย
คุณสมบัติ เช่น นิพจน์การจัดเรียงของตารางและนิพจน์แบบกลุ่มตาม กด '?' เพื่อที่จะได้เห็น
รายการทั้งหมดแน่นอน

หากคุณต้องการปรับแต่งและสร้างคอลัมน์ของคุณเองจริงๆ ไม่ใช่แค่การเปิดใช้งาน
ในตัวที่ไม่แสดงอยู่ในขณะนี้ ให้กดปุ่ม (n) ew และ innotop will
แจ้งให้คุณทราบข้อมูลที่ต้องการ:

· ชื่อคอลัมน์: ต้องเป็นคำที่ไม่มีตัวตลก เช่น just
ตัวอักษร ตัวเลข และขีดล่าง

· ส่วนหัวของคอลัมน์: นี่คือป้ายกำกับที่ปรากฏที่ด้านบนของคอลัมน์ ในส่วน
ส่วนหัวของตาราง สามารถมีช่องว่างและตัวตลกได้ แต่ระวังอย่าทำ
มันกว้างเกินไปและเปลืองพื้นที่บนหน้าจอ

· แหล่งข้อมูลของคอลัมน์: นี่คือนิพจน์ที่กำหนดว่าข้อมูลจาก
แหล่งที่มา (ดู "ตาราง") innotop จะใส่ลงในคอลัมน์ นี่คงเป็นชื่อของ
รายการในแหล่งที่มาหรืออาจเป็นนิพจน์ที่ซับซ้อนมากขึ้นตามที่อธิบายไว้ใน
"การแสดงออก".

เมื่อคุณป้อนข้อมูลที่จำเป็นแล้ว ตารางของคุณจะมีคอลัมน์ใหม่ ไม่มี
ความแตกต่างระหว่างคอลัมน์นี้กับคอลัมน์ในตัว ก็มีคุณสมบัติเหมือนกันหมด
และพฤติกรรม innotop จะเขียนคำจำกัดความของคอลัมน์ลงในไฟล์กำหนดค่า ดังนั้น
มันจะคงอยู่ตลอดเซสชัน

นี่คือตัวอย่าง: สมมติว่าคุณต้องการติดตามจำนวนครั้งที่ทาสของคุณลองอีกครั้ง
การทำธุรกรรม ตามคู่มือ MySQL สถานะ Slave_reried_transactions
ตัวแปรให้ข้อมูลนั้นแก่คุณ: "จำนวนครั้งทั้งหมดตั้งแต่เริ่มต้นที่
เธรด SQL ของการจำลองแบบทาสได้ลองธุรกรรมใหม่ ตัวแปรนี้ถูกเพิ่มใน version
5.0.4" เหมาะสมที่จะเพิ่มลงในตาราง "slave_sql_status"

หากต้องการเพิ่มคอลัมน์ ให้สลับไปที่โหมดการตรวจสอบการจำลองด้วยปุ่ม 'M' แล้วกด
ปุ่ม '^' เพื่อเริ่มตัวแก้ไขตาราง เมื่อได้รับแจ้ง ให้เลือก slave_sql_status เป็น
ตาราง จากนั้นกด 'n' เพื่อสร้างคอลัมน์ พิมพ์ 'ลองใหม่' เป็นชื่อคอลัมน์ 'ลองใหม่'
เป็นส่วนหัวของคอลัมน์ และ 'Slave_reried_transactions' เป็นแหล่งที่มา ตอนนี้คอลัมน์คือ
สร้างแล้ว และคุณจะเห็นหน้าจอตัวแก้ไขตารางอีกครั้ง กด 'q' เพื่อออกจากตัวแก้ไขตาราง
และคุณจะเห็นคอลัมน์ของคุณที่ส่วนท้ายของตาราง

ตัวแปร ชุด


ชุดตัวแปรใช้ในโหมด "S: Variables & Status" เพื่อกำหนดอะไรได้ง่ายขึ้น
ตัวแปรที่คุณต้องการตรวจสอบ เบื้องหลังพวกเขาถูกรวบรวมเป็นรายการของ
นิพจน์แล้วลงในรายการคอลัมน์เพื่อให้สามารถปฏิบัติได้เหมือนกับคอลัมน์ใน any
ตารางอื่นๆ ในแง่ของการแยกและการแปลงข้อมูล อย่างไรก็ตาม คุณได้รับการคุ้มครอง
จากรายละเอียดที่น่าเบื่อด้วยรูปแบบไวยากรณ์ที่น่าจะให้ความรู้สึกเป็นธรรมชาติสำหรับคุณ: SQL SELECT
รายการ.

แหล่งข้อมูลสำหรับชุดตัวแปร และแท้จริงแล้วโหมด S ทั้งหมดคือการรวมกันของ
แสดงสถานะ แสดงตัวแปร และแสดงสถานะ INNODB ลองนึกภาพว่าคุณมีโต๊ะขนาดใหญ่
ด้วยหนึ่งคอลัมน์ต่อตัวแปรที่ส่งคืนจากคำสั่งเหล่านั้น นั่นคือแหล่งข้อมูลสำหรับ
ชุดตัวแปร ขณะนี้ คุณสามารถสืบค้นแหล่งข้อมูลนี้ได้เช่นเดียวกับที่คุณคาดหวัง ตัวอย่างเช่น:

คำถาม เวลาทำงาน คำถาม/เวลาทำงานเป็น QPS

เบื้องหลัง innotop จะแบ่งตัวแปรนั้นออกเป็นสามนิพจน์ คอมไพล์
แล้วเปลี่ยนให้เป็นคำจำกัดความของตาราง จากนั้นแตกไฟล์ตามปกติ นี่กลายเป็น
"ชุดตัวแปร" หรือ "รายการตัวแปรที่คุณต้องการตรวจสอบ"

innotop ให้คุณตั้งชื่อและบันทึกชุดตัวแปรของคุณ และเขียนมันไปยังการกำหนดค่า
ไฟล์. คุณสามารถเลือกชุดตัวแปรที่คุณต้องการดูด้วยปุ่ม 'c' หรือเปิดใช้งานปุ่ม
ชุดถัดไปและก่อนหน้าด้วยปุ่ม '>' และ '<' มีชุดตัวแปรในตัวจำนวนมาก
ด้วยเช่นกัน ซึ่งจะช่วยให้คุณเริ่มต้นได้ดีสำหรับการสร้างของคุณเอง กด 'e' เพื่อแก้ไข
ชุดตัวแปรปัจจุบัน หรือเพียงเพื่อดูว่ามันถูกกำหนดอย่างไร ในการสร้างใหม่ เพียงกด
'c' แล้วพิมพ์ชื่อ

คุณอาจต้องการใช้ฟังก์ชันบางอย่างที่แสดงใน "TRANSFORMATIONS" เพื่อช่วยจัดรูปแบบ
ผล. โดยเฉพาะอย่างยิ่ง "set_precision" มักจะมีประโยชน์ในการจำกัดจำนวนหลักของคุณ
ดู. จากตัวอย่างข้างต้น มีวิธีขยายดังนี้:

คำถาม เวลาทำงาน set_precision(คำถาม/เวลาทำงาน) เป็น QPS

อันที่จริง เรื่องนี้ยังต้องดำเนินการอีกเล็กน้อย หาก "ช่วง" ของคุณน้อยกว่าหนึ่ง
วินาที คุณอาจหารด้วยศูนย์เพราะเวลาทำงานเพิ่มขึ้นในโหมดนี้ด้วย
ค่าเริ่มต้น. ให้ใช้ Uptime_hires แทน:

คำถาม Uptime set_precision(Questions/Uptime_hires) เป็น QPS

ตัวอย่างนี้เรียบง่าย แต่แสดงให้เห็นว่าการเลือกตัวแปรที่คุณต้องการทำได้ง่ายเพียงใด
หน้าจอ

PLUGINS


innotop มีกลไกปลั๊กอินที่เรียบง่ายแต่ทรงพลังซึ่งคุณสามารถขยายหรือปรับเปลี่ยนได้
ฟังก์ชันที่มีอยู่ และเพิ่มฟังก์ชันใหม่ ฟังก์ชันปลั๊กอินของ innotop คือ
ตามเหตุการณ์: ปลั๊กอินลงทะเบียนตัวเองเพื่อเรียกเมื่อมีเหตุการณ์เกิดขึ้น พวกเขามี
โอกาสที่จะมีอิทธิพลต่อเหตุการณ์

ปลั๊กอิน innotop คือโมดูล Perl ที่อยู่ในไดเรกทอรี "plugin_dir" ของ innotop บน UNIX
ระบบ คุณสามารถวางลิงก์สัญลักษณ์ไปยังโมดูลแทนการวางไฟล์จริง
ที่นั่น. innotop จะค้นหาไฟล์โดยอัตโนมัติ หากมีรายการที่สอดคล้องกันใน
ส่วนไฟล์การกำหนดค่า "ปลั๊กอิน" โหลด innotop และเปิดใช้งานปลั๊กอิน

โมดูลต้องสอดคล้องกับส่วนต่อประสานปลั๊กอินของ innotop นอกจากนี้ซอร์สโค้ดของ
โมดูลจะต้องเขียนในลักษณะที่ innotop สามารถตรวจสอบไฟล์และกำหนด
ชื่อแพ็คเกจและคำอธิบาย

แพ็คเกจ แหล่ง การประชุม
innotop ตรวจสอบแหล่งที่มาของโมดูลปลั๊กอินเพื่อกำหนดชื่อแพ็คเกจ Perl มันดู
สำหรับบรรทัดของแบบฟอร์ม "แพ็คเกจ Foo;" และหากพบ ให้พิจารณาชื่อแพ็คเกจของปลั๊กอินเป็น
เป็นฟู แน่นอนว่าชื่อแพ็คเกจสามารถเป็นชื่อแพ็คเกจ Perl ที่ถูกต้องได้ด้วย double
อัฒภาคและอื่น ๆ

นอกจากนี้ยังมองหาคำอธิบายในซอร์สโค้ดเพื่อให้โปรแกรมแก้ไขปลั๊กอินมีความเป็นมนุษย์มากขึ้น-
เป็นกันเอง. คำอธิบายคือบรรทัดแสดงความคิดเห็นของแบบฟอร์ม "# description: Foo" โดยที่ "Foo"
เป็นข้อความ innotop จะถือว่าเป็นคำอธิบายของปลั๊กอิน

เสียบเข้าไป อินเตอร์เฟซ
อินเทอร์เฟซปลั๊กอิน innotop ค่อนข้างง่าย: innotop คาดว่าปลั๊กอินจะเป็นวัตถุ-
โมดูลที่มุ่งเน้นสามารถเรียกใช้วิธีการบางอย่างได้ วิธีการคือ

ใหม่(%ตัวแปร)
นี่คือตัวสร้างของปลั๊กอิน มันถูกส่งผ่านแฮชของตัวแปร innotop ซึ่ง
มันสามารถจัดการได้ (ดู "ตัวแปรปลั๊กอิน") จะต้องส่งคืนการอ้างอิงไปยังใหม่
สร้างวัตถุปลั๊กอิน

ในช่วงเวลาก่อสร้าง innotop ได้โหลดเฉพาะการกำหนดค่าทั่วไปและสร้างเท่านั้น
ตัวแปรบิวท์อินดีฟอลต์ที่มีเนื้อหาดีฟอลต์ (ซึ่งค่อนข้างมาก)
ดังนั้น สถานะของโปรแกรมจะเหมือนกับในซอร์สโค้ด innotop บวกกับ
ตัวแปรการกำหนดค่าจากส่วน "ทั่วไป" ในไฟล์ปรับแต่ง

หากปลั๊กอินของคุณจัดการกับตัวแปร แสดงว่ากำลังเปลี่ยนแปลงข้อมูลส่วนกลางซึ่งแชร์อยู่
โดย innotop และปลั๊กอินทั้งหมด ปลั๊กอินถูกโหลดตามลำดับที่แสดงใน
ไฟล์คอนฟิก ปลั๊กอินของคุณอาจโหลดก่อนหรือหลังปลั๊กอินอื่น ดังนั้นจึงมี
อาจเกิดข้อขัดแย้งหรือการโต้ตอบระหว่างปลั๊กอินหากพวกเขาแก้ไขข้อมูลอื่น ๆ
ปลั๊กอินใช้หรือแก้ไข

register_for_events()
เมธอดนี้ต้องส่งคืนรายการเหตุการณ์ที่ปลั๊กอินสนใจ หากมี
ดู "เหตุการณ์ปลั๊กอิน" สำหรับเหตุการณ์ที่กำหนดไว้ หากปลั๊กอินส่งคืนเหตุการณ์ที่ไม่ใช่
กำหนดไว้ เหตุการณ์จะถูกละเว้น

ตัวจัดการเหตุการณ์
ปลั๊กอินต้องใช้เมธอดที่มีชื่อเหมือนกับแต่ละเหตุการณ์ที่มี
ลงทะเบียน กล่าวอีกนัยหนึ่งถ้าปลั๊กอินส่งคืน qw(foo bar) จาก
register_for_events(),ของมันต้องมี ฟู() และ บาร์() วิธีการ วิธีการเหล่านี้คือ
โทรกลับสำหรับเหตุการณ์ ดู "เหตุการณ์ปลั๊กอิน" สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับแต่ละเหตุการณ์

เสียบเข้าไป ตัวแปร
ตัวสร้างของปลั๊กอินถูกส่งผ่านแฮชของตัวแปร innotop ซึ่งสามารถจัดการได้
อาจเป็นความคิดที่ดีถ้าอ็อบเจ็กต์ปลั๊กอินบันทึกสำเนาไว้เพื่อใช้ในภายหลัง ดิ
ตัวแปรถูกกำหนดในตัวแปร innotop %pluggable_vars และมีดังนี้:

การกระทำ_สำหรับ
hashref ของการแมปคีย์ นี่คือฮอตคีย์ทั่วโลกของ innotop

agg_funcs
แฮชของฟังก์ชันที่ใช้สำหรับการจัดกลุ่มได้ ดู "การจัดกลุ่ม"

การตั้งค่า
แฮชการกำหนดค่าส่วนกลาง

การเชื่อมต่อ
แฮชของข้อกำหนดการเชื่อมต่อ นี่เป็นเพียงข้อมูลจำเพาะของวิธีการ
เชื่อมต่อกับเซิร์ฟเวอร์

ดีบีเอส
hashref ของการเชื่อมต่อฐานข้อมูลของ innotop เหล่านี้เป็นวัตถุการเชื่อมต่อ DBI จริง

ฟิลเตอร์
แฮชของตัวกรองที่ใช้กับแถวของตาราง ดู "ตัวกรอง" สำหรับข้อมูลเพิ่มเติม

โหมด
แฮชของโหมด ดู "โหมด" สำหรับข้อมูลเพิ่มเติม

เซิร์ฟเวอร์_กลุ่ม
แฮชรีฟของกลุ่มเซิร์ฟเวอร์ ดู "กลุ่มเซิร์ฟเวอร์"

tbl_meta
แฮชของข้อมูลเมตาตารางของ innotop โดยมีหนึ่งรายการต่อตาราง (ดู "ตาราง" สำหรับ
ข้อมูลมากกว่านี้).

trans_funcs
แฮชของฟังก์ชันการแปลง ดู "การเปลี่ยนแปลง"

var_sets
hashref ของชุดตัวแปร ดู "ชุดตัวแปร"

เสียบเข้าไป เหตุการณ์ที่เกิดขึ้น
แต่ละเหตุการณ์ถูกกำหนดไว้ที่ใดที่หนึ่งในซอร์สโค้ด innotop เมื่อ innotop รันโค้ดนั้น
มันรันฟังก์ชันเรียกกลับสำหรับแต่ละปลั๊กอินที่แสดงความสนใจใน
เหตุการณ์. innotop ส่งข้อมูลบางส่วนสำหรับแต่ละเหตุการณ์ เหตุการณ์ถูกกำหนดไว้ใน
%event_listener_for ตัวแปร และมีดังนี้:

extract_values($set, $cur, $pre, $tbl)
เหตุการณ์นี้เกิดขึ้นภายในฟังก์ชันที่ดึงค่าจากแหล่งข้อมูล ดิ
อาร์กิวเมนต์คือชุดของค่า ค่าปัจจุบัน ค่าก่อนหน้า และค่า
ชื่อตาราง

set_to_tbl
มีการกำหนดเหตุการณ์ไว้หลายแห่งในรูทีนย่อยนี้ ซึ่งมีหน้าที่ในการเลี้ยว
arrayref ของ hashrefs ลงใน arrayref ของบรรทัดที่สามารถพิมพ์ไปยังหน้าจอได้
เหตุการณ์ทั้งหมดส่งผ่านข้อมูลเดียวกัน: arrayref ของแถวและชื่อของตารางที่กำลัง
สร้าง. เหตุการณ์คือ set_to_tbl_pre_filter
set_to_tbl_pre_sort, set_to_tbl_pre_group, set_to_tbl_pre_colorize,
set_to_tbl_pre_transform, set_to_tbl_pre_pivot, set_to_tbl_pre_create,
set_to_tbl_post_create.set_to_tbl_post_ สร้าง

draw_screen($ เส้น)
เหตุการณ์นี้เกิดขึ้นภายในรูทีนย่อยที่พิมพ์บรรทัดไปที่หน้าจอ $lines
เป็น arrayref ของ strings

ง่าย เสียบเข้าไป ตัวอย่าง
วิธีที่ง่ายที่สุดในการอธิบายการทำงานของปลั๊กอินอาจเป็นตัวอย่างง่ายๆ
โมดูลต่อไปนี้จะเพิ่มคอลัมน์ที่จุดเริ่มต้นของทุกตารางและตั้งค่าเป็น
1.

ใช้อย่างเข้มงวด
ใช้คำเตือน FATAL => 'ทั้งหมด';

แพ็คเกจ Innotop::Plugin::ตัวอย่าง;
# คำอธิบาย: เพิ่มคอลัมน์ 'ตัวอย่าง' ให้กับทุกตาราง

ย่อยใหม่ {
ของฉัน ( $class, %vars ) = @_;
# อ้างอิงถึงตัวแปรของ innotop ใน $self
ตัวเอง $self = bless { %vars } $class;

# ออกแบบคอลัมน์ตัวอย่าง
$col ของฉัน = {
hdr => 'ตัวอย่าง',
แค่ => '',
ธ.ค. => 0,
นัม => 1,
label => 'ตัวอย่าง',
src => 'example', # รับข้อมูลจากคอลัมน์นี้ในแหล่งข้อมูล
tbl => '',
ทรานส์ => [],
};

# เพิ่มคอลัมน์ในทุกตาราง
$tbl_meta ของฉัน = $vars{tbl_meta};
foreach $tbl ของฉัน ( ค่า %$tbl_meta ) {
# เพิ่มคอลัมน์ในรายการคอลัมน์ที่กำหนด
$tbl->{cols}->{example} = $col;
# เพิ่มคอลัมน์ในรายการคอลัมน์ที่มองเห็นได้
unshift @{$tbl->{visible}}, 'ตัวอย่าง';
}

# อย่าลืมส่งคืนการอ้างอิงไปยังวัตถุ
ส่งคืน $self;
}

# ฉันต้องการถูกเรียกเมื่อมีการสร้างชุดข้อมูลลงในตาราง
register_for_events ย่อย {
ของฉัน ( $self ) = @_;
ส่งคืน qw(set_to_tbl_pre_filter);
}

# วิธีการนี้จะถูกเรียกเมื่อเกิดเหตุการณ์
set_to_tbl_pre_filter ย่อย {
ของฉัน ( $self, $rows, $tbl ) = @_;
# ตั้งค่าแหล่งข้อมูลของคอลัมน์ตัวอย่างเป็นค่า 1
foreach $row ของฉัน ( @$rows ) {
$row->{example} = 1;
}
}

1;

เสียบเข้าไป บรรณาธิการ
ตัวแก้ไขปลั๊กอินช่วยให้คุณดูปลั๊กอินที่ innotop ค้นพบและเปิดใช้งานหรือปิดใช้งาน
พวกเขา. เริ่มเอดิเตอร์โดยกด $ เพื่อเริ่มเอดิเตอร์คอนฟิกูเรชันจากโหมดใดก็ได้
กดปุ่ม 'p' เพื่อเริ่มตัวแก้ไขปลั๊กอิน คุณจะเห็นรายการปลั๊กอิน innotop
ค้นพบ. คุณสามารถใช้ปุ่ม 'j' และ 'k' เพื่อย้ายไฮไลท์ไปยังปุ่มที่ต้องการ
จากนั้นกดปุ่ม * เพื่อสลับเป็นใช้งานหรือไม่ใช้งาน ออกจากตัวแก้ไขและรีสตาร์ท innotop
เพื่อให้การเปลี่ยนแปลงมีผล

SQL งบ


innotop ใช้ชุดคำสั่ง SQL ที่จำกัดเพื่อดึงข้อมูลจาก MySQL เพื่อแสดงผล ดิ
คำสั่งได้รับการปรับแต่งตามเวอร์ชันของเซิร์ฟเวอร์ที่ดำเนินการ
ตัวอย่างเช่น ใน MySQL 5 และใหม่กว่า INNODB_STATUS จะเรียกใช้ "SHOW ENGINE INNODB STATUS"
ในขณะที่เวอร์ชันก่อนหน้าจะเรียกใช้ "SHOW INNODB STATUS" ข้อความเป็น
ดังต่อไปนี้:

คำสั่ง SQL ดำเนินการ
=================================================
INNODB_STATUS แสดง [ENGINE] สถานะ INNODB
KILL_CONNECTION ฆ่า
KILL_QUERY ฆ่า QUERY
OPEN_TABLES แสดงตารางที่เปิดอยู่
รายการกระบวนการ แสดงรายการกระบวนการทั้งหมด
SHOW_MASTER_LOGS แสดงบันทึกของอาจารย์
SHOW_MASTER_STATUS แสดงสถานะอาจารย์
SHOW_SLAVE_STATUS แสดงสถานะสเลฟ
SHOW_STATUS แสดง [ทั่วโลก] สถานะ
SHOW_VARIABLES แสดง [GLOBAL] VARIABLES

DATA แหล่งที่มา


ทุกครั้งที่ innotop แยกค่าเพื่อสร้างตาราง (ดู "EXPRESSIONS" และ "TABLES")
ทำเช่นนั้นจากแหล่งข้อมูลเฉพาะ ส่วนใหญ่เป็นเพราะข้อมูลที่ซับซ้อนที่ดึงมาจาก
แสดงสถานะ INNODB นี้ค่อนข้างยุ่ง SHOW INNODB สถานะมีส่วนผสมของ
ค่าเดียวและค่าซ้ำที่สร้างชุดข้อมูลที่ซ้อนกัน

เมื่อใดก็ตามที่ innotop ดึงข้อมูลจาก MySQL มันจะเพิ่มสองบิตพิเศษให้กับแต่ละชุด: cxn และ
เวลาทำงาน_hires cxn คือชื่อของการเชื่อมต่อที่ข้อมูลมา Uptime_hires
เป็นเวอร์ชันความละเอียดสูงของตัวแปรสถานะ Uptime ของเซิร์ฟเวอร์ ซึ่งสำคัญ if
การตั้งค่า "ช่วงเวลา" ของคุณคือเสี้ยววินาที

ต่อไปนี้คือประเภทของแหล่งข้อมูลที่ดึงข้อมูลออกมา:

สถานะ_ตัวแปร
นี่เป็นหมวดหมู่ที่กว้างที่สุด ซึ่งประเภทของข้อมูลส่วนใหญ่ตกอยู่ มันเริ่มต้นด้วย
การรวมกันของ SHOW STATUS และ SHOW VARIABLES แต่อาจมีแหล่งอื่นรวมอยู่ด้วย
ได้ตามต้องการ เช่น SHOW MASTER STATUS และ SHOW SLAVE STATUS รวมถึงหลายๆ
ค่าที่ไม่ซ้ำจาก SHOW INNODB STATUS

DEADLOCK_LOCKS
ข้อมูลนี้ดึงมาจากรายการธุรกรรมใน LATEST DETECTED DEADLOCK
ส่วนของ SHOW INNODB STATUS มันซ้อนกันลึกสองระดับ: ธุรกรรม แล้ว
ล็อค

DEADLOCK_TRANSACTIONS
ข้อมูลนี้มาจากรายการธุรกรรมในส่วน LATEST DETECTED DEADLOCK ของ SHOW
สถานะ INNODB มันซ้อนกันลึกหนึ่งระดับ

อธิบาย
ข้อมูลนี้มาจากชุดผลลัพธ์ที่ส่งคืนโดย EXPLAIN

INNODB_TRANSACTIONS
ข้อมูลนี้มาจากส่วนธุรกรรมของ SHOW INNODB STATUS

IO_THREADS
ข้อมูลนี้มาจากรายการเธรดในส่วน FILE I/O ของ SHOW INNODB
สถานะ.

INNODB_LOCKS
ข้อมูลนี้มาจากส่วนธุรกรรมของ SHOW INNODB STATUS และซ้อนกันสอง
ระดับลึก

OPEN_TABLES
ข้อมูลนี้มาจาก SHOW OPEN TABLES

กระบวนการ
ข้อมูลนี้มาจาก SHOW FULL PROCESSLIST

OS_WAIT_ARRAY
ข้อมูลนี้มาจากส่วน SEMAPHORES ของ SHOW INNODB STATUS และซ้อนกันหนึ่งระดับ
ลึก. มันมาจากบรรทัดที่มีลักษณะดังนี้:

--กระทู้ 1568861104 รอที่ btr0cur.c สาย 424 ....

ข้อมูล MySQL สิทธิพิเศษ


· คุณต้องเชื่อมต่อกับ MySQL ในฐานะผู้ใช้ที่มีสิทธิ์ SUPER สำหรับหลาย ๆ
ฟังก์ชั่น

· หากคุณไม่มีสิทธิ์ SUPER คุณยังสามารถเรียกใช้ฟังก์ชันบางอย่างได้ แต่คุณจะไม่
จำเป็นต้องดูข้อมูลเดียวกันทั้งหมด

· คุณต้องมีสิทธิ์ PROCESS เพื่อดูรายการการสืบค้นที่กำลังทำงานในโหมด Q

· คุณต้องมีสิทธิ์พิเศษในการเริ่มและหยุดเซิร์ฟเวอร์ทาส

· คุณต้องมีสิทธิ์ที่เหมาะสมเพื่อสร้างและวางตารางการหยุดชะงักหากจำเป็น (ดู
"การเชื่อมต่อเซิร์ฟเวอร์")

ระบบ สิ่งที่ต้องมี


คุณต้องใช้ Perl เพื่อเรียกใช้ innotop แน่นอน คุณต้องมีโมดูล Perl สองสามตัว: DBI,
DBD::mysql, Term::ReadKey และเวลา::HiRes สิ่งเหล่านี้ควรรวมอยู่ใน Perl . ส่วนใหญ่
การแจกแจง แต่ในกรณีที่ไม่ใช่ ฉันขอแนะนำให้ใช้เวอร์ชันที่แจกจ่ายพร้อมกับ your
ระบบปฏิบัติการหรือการแจกจ่าย Perl ไม่ใช่จาก CPAN Term::ReadKey โดยเฉพาะ has
ทราบว่าทำให้เกิดปัญหาหากติดตั้งจาก CPAN

หากคุณมี Term::ANSIColor innotop จะใช้เพื่อจัดรูปแบบส่วนหัวให้อ่านง่ายขึ้นและ
ดาน. (ภายใต้ Microsoft Windows คุณต้องมี Win32::Console::ANSI สำหรับเทอร์มินัล
รหัสการจัดรูปแบบเพื่อเป็นเกียรติแก่) หากคุณติดตั้ง Term::ReadLine ขอแนะนำให้ใช้
Term::ReadLine::Gnu คุณจะได้รับการสนับสนุนการเติมข้อความอัตโนมัติที่ดี

ฉันเรียกใช้ innotop บน Gentoo GNU/Linux, Debian และ Ubuntu และฉันได้รับคำติชมจากผู้คน
รันบน Red Hat, CentOS, Solaris และ Mac OSX ได้สำเร็จ ไม่เห็นมีเหตุผลเลย
เหตุใดจึงไม่ทำงานบนระบบปฏิบัติการ UNIX-ish อื่น ๆ แต่ฉันไม่รู้แน่ชัด นอกจากนี้ยัง
ทำงานบน Windows ภายใต้ ActivePerl โดยไม่มีปัญหา

innotop ถูกใช้บน MySQL เวอร์ชัน 3.23.58, 4.0.27, 4.1.0, 4.1.22, 5.0.26, 5.1.15,
และ 5.2.3. หากทำงานไม่ถูกต้องสำหรับคุณ นั่นคือจุดบกพร่องที่ควรรายงาน

ใช้ innotop ออนไลน์โดยใช้บริการ onworks.net



โปรแกรมออนไลน์ Linux และ Windows ล่าสุด