ฐานข้อมูลเปรียบเทียบ
MySQL: ค่าเริ่มต้นของฐานข้อมูล แต่ยังคงได้รับรายได้อยู่
MySQL เป็นฐานข้อมูลที่เว็บส่วนใหญ่ใช้งาน ไม่ใช่เพราะมันน่าตื่นเต้นแต่เพราะมันคาดเดาได้: แกน ACID ของ InnoDB โมเดลการจำลองแบบที่ผู้ดูแลระบบทุกคนได้สัมผัส และระบบนิเวศของพาเนล ปลั๊กอิน และสมมติฐานของแอปพลิเคชันที่สร้างขึ้นด้านบน งานที่จริงจังอยู่ที่การกำหนดค่าเริ่มต้น ระเบียบวินัยในการจำลอง และการรู้ว่าเวอร์ชัน 8 ทำให้เกิดความซับซ้อนจริง ๆ ที่ไหน
ประเด็นสำคัญ
- InnoDB เป็นเครื่องมือจัดเก็บข้อมูลที่มีความสำคัญ: คีย์หลักแบบคลัสเตอร์ การล็อกแถว และการกู้คืนทำซ้ำโดยไม่เกิดความผิดพลาด บทความดั้งเดิมของ MyISAM ที่แนะนำการแลกเปลี่ยนกลไกมักจะเกิดขึ้นก่อนความจริงที่ว่าสแต็ก MySQL สมัยใหม่นั้นเป็น InnoDB 99% และมีความสุขมากกว่า
- MySQL 8 ได้รับความเจ็บปวดจากการอัปเกรดด้วยคุณสมบัติที่แท้จริง: ฟังก์ชันหน้าต่าง, CTE, ปรับปรุง EXPLAIN FORMAT=TREE, การจัดการ JSON ระดับ Hermes ผ่าน JSON_TABLE; โฟลว์ที่คาดการณ์การตลาดโดยเน้นฟีเจอร์แรกของ MariaDB forks ได้แคบลงอย่างมาก
- การจำลองแบบคือจุดที่อาชีพถูกสร้างขึ้นหรือพัง: การตั้งค่าตาม GTID ทำให้โทโพโลยี (ลูกโซ่ หลายแหล่งที่มา) สามารถจัดการได้ กึ่งซิงค์ซึ่งเป็นการประนีประนอมระหว่างประสิทธิภาพและความทนทาน และต้องวัดความล่าช้าในการอ่านแบบจำลองไม่ได้ (การตรวจสอบแบบ pt-heartbeat หรือเวลาแฝงตาม Performance_schema)
- งานด้านประสิทธิภาพเริ่มต้นด้วยบันทึกการสืบค้นที่ช้าบวกกับ Performance_schema: การสรุปคำสั่ง การใช้ดัชนี และการจัดทำดัชนีแบบแรกด้วยสคีมา เอาชนะทุกรายการพารามิเตอร์ my.cnf อันมหัศจรรย์ การกำหนดขนาดบัฟเฟอร์พูลเทียบกับชุดการทำงานเป็นปุ่มที่แท้จริงที่สำคัญ
- การสำรองข้อมูลที่กู้คืน: เวิร์กโฟลว์ตามดัมพ์ (mysqldump --single-transaction) สำหรับพื้นที่ขนาดเล็ก สแน็ปช็อตทางกายภาพ (Percona xtrabackup-class) เพื่อความรวดเร็ว และการกู้คืน ณ เวลาใดเวลาหนึ่งจะทดสอบกับกำหนดการหยุดทำงานจริงเสมอ ไม่ใช่โครงข่ายเอกสาร
- โดยที่สถานะเริ่มต้นของ MySQL ยังคงชนะอย่างต่อเนื่อง: ระบบนิเวศของแอปพลิเคชันถือว่ามัน, พาเนลจัดส่งมัน (มักจะสลับกับ MariaDB), ผู้ให้บริการระบบคลาวด์ให้ราคาถูก และระบบนิเวศของปลั๊กอิน CMS (โดยเฉพาะ WordPress) ทดสอบกับมันก่อน การคงค่าเริ่มต้นหมายถึงการคงอยู่ในการทดสอบ
บันทึกจากหน้างาน
งานด้านประสิทธิภาพของ MySQL ที่ดีที่สุดที่ฉันเคยเห็นไม่ใช่การปรับแต่งการกำหนดค่าแบบมาราธอน แต่เป็นนักพัฒนาที่ลบดัชนีสามตัวที่ต่อสู้กับตาราง OLTP หนึ่งตัวสำหรับปริมาณงานเขียน การยกเลิกการเปรียบเทียบเริ่มต้นจากการสรุปข้อความค้นหาที่ช้า ไม่ใช่โพสต์บนบล็อก
คำถามที่พบบ่อย
MySQL 8 หรือ MariaDB สำหรับโครงการใหม่?
โปรเจ็กต์ใหม่ที่ไม่มีข้อจำกัดด้านระบบนิเวศ: MariaDB เป็นค่าเริ่มต้นที่ดี แต่ MySQL 8 มีระบบนิเวศของผู้จำหน่าย แพทช์รักษาความปลอดภัย และการจำลองแบบ เปรียบเทียบคุณสมบัติที่คุณต้องการจริงๆ อ่านบทความ mysql-vs-postgresql ของเราสำหรับคำถามเชิงสัมพันธ์
การเปลี่ยน MySQL ที่มีอยู่เป็น MariaDB จำเป็นต้องเปลี่ยนแปลงหรือไม่
การดาวน์เกรดในเวอร์ชันรูปแบบไบนารี่ถือเป็นจุดแข็ง: MariaDB ไม่ได้อ่านพจนานุกรมข้อมูลของ MySQL 8 การโยกย้ายแบบลอจิคัล (ดัมพ์/โหลด) ใช้งานได้ การทดแทนปลั๊กอินจำเป็นต้องมีสินค้าคงคลังก่อนที่จะมีข้อผูกมัด
การจำลองแบบกึ่งซิงค์: คุ้มค่ากับเวลาแฝงหรือไม่
ช่วยลดการสูญเสียข้อมูลเมื่อเกิดข้อผิดพลาดแบบเงียบๆ กฎคลาสสิกเป็นหนึ่งในสองตัวเลือกความสอดคล้อง/ประสิทธิภาพโดยมี async เป็นพื้นฐาน สำหรับปริมาณงานที่แออัดส่วนใหญ่ คำตอบที่ถูกต้องคือการซิงค์แบบกึ่งซิงค์บวกกับการเฟลโอเวอร์ที่ทดสอบแล้ว ไม่ใช่การซิงค์แบบเต็ม
ฉันจะหยุดไซต์ที่ช้าเพียงไซต์เดียวจากการฆ่ากล่องได้อย่างไร
ทรัพยากรต่อผู้ใช้ (CloudLinux db_governor บนสแต็กที่ใช้ร่วมกัน การจำกัดการสืบค้นพร็อกซีด้านหน้า) บวกกับระเบียบวินัยในการสืบค้นที่ช้า ฐานข้อมูลนั้นไม่มีเข็มขัดนิรภัยเว้นแต่ว่าสภาพแวดล้อมจะคาดเข็มขัดนิรภัยไว้
Kinetikatech ช่วยเรื่อง ฐานข้อมูลเปรียบเทียบ ได้อย่างไร
นี่คือสิ่งที่เราทำทุกวัน: ตัวเลือกกลไกฐานข้อมูลสำหรับการโฮสต์ปริมาณงาน เปรียบเทียบกับการรับประกันความถูกต้อง น้ำหนักในการปฏิบัติงาน และต้นทุนจริง: กลไกแบบฝังเทียบกับเซิร์ฟเวอร์, MySQL กับ PostgreSQL, SQL กับที่เก็บเอกสาร รวมถึงกรณีศึกษาแบบเดิมที่กลับมาใช้อีกเรื่อยๆ บริการ การจัดการเซิร์ฟเวอร์และการเพิ่มความเร็วเว็บไซต์ ของเราดูแลครบวงจร ตั้งแต่ประเมิน ลงมือทำ ติดตาม 24 ชั่วโมง ไปจนถึงรับเรื่องฉุกเฉินภายใน 30 นาที