ปรับการกำหนดค่า MySQL ให้เหมาะสมสำหรับผู้ใช้คนเดียวที่มีการสืบค้นที่ซับซ้อน

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

เครื่องจักร:

  • วินโดวส์ 7 64 บิต
  • Intel Core i7-4800MQ @ 2.70 GHz
  • แรม 32GB
  • 2x512GB SSD
  • MySQL 5.7, INNODB

สิ่งที่ฉันทำจนถึงตอนนี้:

  • HyperThreading ที่ปิดการใช้งาน (MySQL ใช้เพียงหนึ่งคอร์เสมือนต่อการสืบค้น
    - การใช้งาน CPU 12.5% ​​--> 25%)
  • ประกาศคีย์หลักและ
  • จัดทำดัชนีคีย์ต่างประเทศทั้งหมด
  • innodb_buffer_pool_size = 25G
  • สูงสุด_การเชื่อมต่อ=10
  • การใช้งาน InnoDB

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

  • โปรแกรมฐานข้อมูล?
  • การกำหนดค่าทั่วไป?
  • แคชข้อมูลทั้งหมดของการรวมได้ดีขึ้นหรือไม่

หมายเหตุ: ภายใต้การกำหนดค่าปัจจุบัน การใช้งาน CPU ถือเป็นคอขวดเนื่องจากอยู่ที่ 25% เมื่อฉันเรียกใช้แบบสอบถามที่ซับซ้อน จากการทดสอบฉันได้ลองใช้ข้อความค้นหาจำนวนมาก (ดึงข้อมูลจำนวนมาก) ถ้าฉันเชื่อว่าจังหวะเวลาของ MYSQL Workbench ระยะเวลาเพียง 4 วินาที แต่หลังจากใช้งานไป 10 ชั่วโมง ก็ดึงข้อมูลไม่เสร็จ...

ขอบคุณมาก!


person Uli    schedule 12.02.2017    source แหล่งที่มา
comment
จัดทำดัชนีหลักทั้งหมด . . กุญแจ ฟังดูไม่ถูกต้อง คีย์หลักจะได้รับดัชนีของตัวเองโดยอัตโนมัติ เพียงแค่ประกาศไว้   -  person Gordon Linoff    schedule 12.02.2017
comment
@GordonLinoff: ใช่คุณพูดถูก นั่นคือสิ่งที่ฉันหมายถึง ขออภัยที่ไม่ถูกต้อง. ฉันจะเปลี่ยนมัน   -  person Uli    schedule 12.02.2017


คำตอบ (1)


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

person Olaf_SQL    schedule 12.02.2017
comment
อืม ฉันแปลงทุกอย่างเป็น ENGINE=MyISAM และทำการทดสอบบางอย่าง ฉันมีคำถาม SELECT ที่มี 8 JOINS ด้วย INNODB ใช้เวลาประมาณ 20 นาที และด้วย MyISAM นานกว่า 6 เท่า นี่จึงอาจไม่ใช่วิธีแก้ปัญหา ฉันทำอะไรผิดหรือเปล่า? - person Uli; 13.02.2017