เรียกใช้ OPTIMIZE TABLE เพื่อจัดเรียงตารางเพื่อประสิทธิภาพที่ดีขึ้น


12

ฉันใช้ระบบปฏิบัติการ Linux 64-Bit จูนเนอร์ mysql ของฉันกำลังพูดถึงสิ่งต่าง ๆ ด้านล่าง:

-------- สถิติทั่วไป ---------------------------------------- ----------
[-] ข้ามการตรวจสอบเวอร์ชั่นสำหรับสคริปต์ MySQLTuner
[ตกลง] ปัจจุบันรัน MySQL เวอร์ชัน 5.1.61-log ที่รองรับแล้ว
[ตกลง] ปฏิบัติการบนสถาปัตยกรรม 64 บิต

-------- สถิติของเครื่องมือการจัดเก็บ --------------------------------------- ----
[-] สถานะ: -Archive -BDB -Federated + InnoDB -ISAM -NDBCluster
[-] ข้อมูลในตาราง MyISAM: 1G (ตาราง: 1914)
[-] ข้อมูลในตาราง InnoDB: 4M (ตาราง: 199)
[!!] ตารางแยกส่วนทั้งหมด: 296

-------- คำแนะนำด้านความปลอดภัย ---------------------------------------- ---
[ตกลง] ผู้ใช้ฐานข้อมูลทั้งหมดมีรหัสผ่านที่ได้รับมอบหมาย

-------- การวัดประสิทธิภาพ ---------------------------------------- ---------
[-] สูงสุดสำหรับ: 6s (7K q [1K qps], 142 conn, TX: 8M, RX: 701K)
[-] อ่าน / เขียน: 97% / 3%
[-] บัฟเฟอร์ทั้งหมด: 1.7G ทั่วโลก + 13.2M ต่อเธรด (384 เธรดสูงสุด)
[ตกลง] การใช้หน่วยความจำที่เป็นไปได้สูงสุด: 6.6G (42% ของ RAM ที่ติดตั้ง)
[ตกลง] ข้อความค้นหาช้า: 0% (0 / 7K)
[ตกลง] การใช้งานการเชื่อมต่อที่ใช้ได้สูงสุด: 5% (20/384)
[ตกลง] ขนาดบัฟเฟอร์คีย์ / ดัชนี MyISAM ทั้งหมด: 1.5G / 2.7G
[ตกลง] อัตราการโจมตีของบัฟเฟอร์คีย์: 97.4% (553K แคช / 14K อ่าน)
[ตกลง] ประสิทธิภาพการค้นหาแคช: 64.6% (เลือกแคช 4K / 6K)
[OK] Query cache Query ต่อวัน: 0
[ตกลง] การเรียงลำดับที่ต้องการตารางชั่วคราว: 0% (การเรียงลำดับชั่วคราว 2 ครั้ง / 337 การเรียงลำดับ)
[ตกลง] ตารางชั่วคราวที่สร้างบนดิสก์: 8% (17 บนดิสก์ / ทั้งหมด 198 รายการ)
[ตกลง] อัตราการเข้าถึงแคชของเธรด: 85% (สร้างการเชื่อมต่อ 20 ครั้ง / 142 ครั้ง)
[ตกลง] อัตราการเข้าชมแคชตาราง: 98% (เปิด 438 / เปิด 445)
[ตกลง] เปิดขีด ​​จำกัด ของไฟล์ที่ใช้: 10% (856 / 8K)
[ตกลง] ล็อคตารางได้ทันที: 99% (ล็อค 2K ทันที / 2K)
[ตกลง] ขนาดข้อมูล InnoDB / พูลบัฟเฟอร์: 4.2M / 8.0M


-------- ข้อเสนอแนะ ----------------------------------------- ------------
คำแนะนำทั่วไป:
    เรียกใช้ OPTIMIZE TABLE เพื่อจัดเรียงตารางเพื่อประสิทธิภาพที่ดีขึ้น
    MySQL เริ่มต้นภายใน 24 ชั่วโมงที่ผ่านมา - คำแนะนำอาจไม่ถูกต้อง

คำแนะนำของพวกเขาคือเรียกใช้OPTIMIZE TABLEไปยังตารางจัดเรียงข้อมูลเพื่อประสิทธิภาพที่ดีขึ้น แต่ฉันไม่รู้วิธีเรียกใช้ผ่าน Putty

มีใครบ้างที่สามารถให้รหัสแก่ฉันได้ฉันจะเรียกใช้ผ่าน Putty ได้อย่างไร

คำตอบ:


7

OPTIMIZE TABLE เป็นคำสั่ง SQL - รันในไคลเอนต์ MySQL

บนบรรทัดรับคำสั่งของเซิร์ฟเวอร์คุณควรติดตั้งไคลเอ็นต์บรรทัดคำสั่ง mysql -u username -pคุณสามารถเชื่อมต่อกับฐานข้อมูลของคุณในลูกค้าที่มี

ดูเอกสารประกอบOPTIMIZE TABLEสำหรับข้อมูลเพิ่มเติม


ไซต์นี้เกี่ยวกับคำถามที่ถามโดยผู้ดูแลระบบมืออาชีพ
ร่าเริง

@ ใส - เอ่อนั่นหมายความว่าเป็นคำถามไม่ใช่คำตอบที่ถูกต้องของเชนใช่มั้ย
ทำเครื่องหมายเฮนเดอร์สัน

2
@ โปร่งใสขวา - แต่ฉันไม่คิดว่ามันยุติธรรมที่จะตัดสินความเป็นมืออาชีพของใครสักคนโดยดูจากคำสั่ง SQL เมื่อพวกเขาเห็น การวิจัยจะตอบคำถามได้อย่างรวดเร็ว แต่ .. ฉันไม่ชอบความคิดที่ว่าชุมชนนี้หันไปใช้คำถามที่ว่า "ชัดเจน" เกินไป
เชนหัวเสีย

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

1
ฉันไม่เห็นด้วยกับคุณแม้ว่ามีสถานที่ที่คุณต้องวาดเส้น ฉันคิดว่ามันยุติธรรมที่จะกล่าวว่าอาชีพ (faq: ในความสามารถระดับมืออาชีพ) กำลังทำงานกับฐานข้อมูล MySQL และพยายามเพิ่มประสิทธิภาพพวกเขาควรจะมีความเชี่ยวชาญพอที่จะ google คำและคิดออกว่าเป็นแบบสอบถาม MySQL จากผลการค้นหาครั้งแรก บางทีฉันคาดหวังมากเกินไปในการทำงานของพนักงานใด ๆ ..
gparent

18

คุณยังสามารถลองmysqlcheck -u username -p --auto-repair --optimize --all-databasesในเทอร์มินัล

เท่าที่ใช้ "ตารางเพิ่มประสิทธิภาพ" คุณสามารถเริ่ม MySQL เช่นนี้mysql -u username -pและจากที่นั่นคุณสามารถรันคำสั่ง โดยปกติแล้วคำสั่งแรกที่ฉันใช้คือshow databases;แต่คุณควรจะพบกับการสอน MySQL ก่อน คนแรกที่มาใน Google: http://downloads.mysql.com/docs/mysql-tutorial-excerpt-5.1-en.pdf

ไม่ว่าคุณจะใช้สีโป๊วหรือไม่ไม่เกี่ยวข้อง คุณอาจต้องการพูดว่า "จากบรรทัดคำสั่ง" แทน "ผ่านทาง Putty"


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

1
ทำตัวเองชอบและทำสำรองฐานข้อมูลก่อนที่จะทำงานใด ๆ นี้ mysqldump -u username -p dbname > dbname.sqlและgzip dbname.sqlควรทำอย่างดี
Fiasco Labs

Fiasco เป็นอย่างน้อยใน centos คำสั่งควรจะเป็นmysqldump -u username -p db_name > dbname.sql
yitwail
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.