ประโยชน์ของ Barracuda และการบีบอัด


12

ฉันได้อ่านเกี่ยวกับรูปแบบไฟล์ของ MySQL Antelope และ Barracuda เมื่อไม่นานมานี้และฉันสงสัยว่าฉันจะได้รับประโยชน์จากการมี Barracuda และการบีบอัดข้อมูลหรือไม่

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

ดูเหมือนว่าการบีบอัดจะให้ประโยชน์กับคนไม่กี่คนเช่น:
http://www.mysqlperformanceblog.com/2008/04/23/real-life-use-case-for-barracuda-innodb-file-format/

ฉันเข้าใจว่าหน่วยความจำและพื้นที่ดิสก์สามารถลดลงได้ แต่ฉันไม่แน่ใจว่าฉันเข้าใจสิ่งนี้หรือไม่ (อ้างอิงจากบทความ):
"~ 5% โหลด CPU ตามด้านบน (จาก 80-100% ส่วนใหญ่รอ I / O)
0.01 เวลาค้นหาเฉลี่ยวินาทีโดยคีย์หลัก (จาก 1-20 วินาทีก่อนการแปลง) "

ฉันคิดว่าสองสิ่งนี้จะไม่ดีขึ้นเพราะถ้าข้อมูลถูกบีบอัดเซิร์ฟเวอร์ต้องคลายการบีบอัดเพื่อรับข้อมูลต้นฉบับอีกครั้งดังนั้นจึงไม่เหมาะสมที่การใช้งาน CPU จะเพิ่มขึ้นใช่ไหม

สิ่งนี้มีประโยชน์กับคุณในแอปพลิเคชันแบบอ่าน / เขียนหรือไม่ คุณจะแนะนำให้ฉันเปลี่ยนเป็น Barracuda และการบีบอัดไหม

คุณตระหนักถึงปัญหาของ Barracuda หรือไม่?
ดูเหมือนว่าคำตอบของคำถามต่อไปนี้จะกล่าวถึงปัญหาบางอย่าง แต่เนื่องจากมาจาก 2011 ฉันจะบอกว่าได้รับการแก้ไขแล้วในตอนนี้: /server/258022/mysql-innodb-how-to-switch -to- น้ำดอกไม้รูปแบบ

คำตอบ:


14

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

บทความที่คุณกำลังพูดถึงอาจจะเก่าเกินไป (5.1)และในฐานะ Peter Z. CEO ของ Percona กล่าวถึงความคิดเห็นที่อาจทำให้เข้าใจผิดเล็กน้อย นั่นไม่ได้หมายความว่าการบีบอัดจะไม่สามารถสร้างผลกำไรมหาศาลขึ้นอยู่กับปริมาณงาน อย่างไรก็ตามฉันขอแนะนำให้คุณลองใช้กับรุ่น> = 5.6 เนื่องจากทั้ง Facebook และ Oracle ได้ทำการปรับปรุงมากมายเกี่ยวกับเรื่องนี้

ในฐานะที่เป็นข้อมูลอ้างอิงล่าสุดฉันขอแนะนำให้คุณ:

โดยเฉพาะอย่างยิ่งฉันชอบสื่อของ Facebook เนื่องจากเป็นบุคคลที่สาม (ไม่จำเป็นต้องมีวาระ) และพวกเขามีการติดตั้ง MySQL ที่ใหญ่ที่สุดในโลก อย่างที่คุณเห็นพวกเขาประสบความสำเร็จอย่างมากในการรวมเทคโนโลยี SSD เข้ากับการบีบอัด

มันจะเป็นประโยชน์กับคุณ? ที่จะขึ้นอยู่กับภาระงานของคุณตั้งและการตั้งค่าการทำงาน (IOPS, หน่วยความจำ) การบีบอัดอาจส่งผลกระทบในทางลบในบางกรณีทั้งนี้ขึ้นอยู่กับว่าคุณมีข้อ จำกัด ของ IO หรือไม่โดยการเพิ่ม CPU เพิ่มเติมข้อกำหนดหน่วยความจำ (ทั้งหน้าที่ถูกบีบอัดและไม่มีการบีบอัดหน้าจะถูกเก็บไว้ในบัฟเฟอร์บัฟเฟอร์ ความล่าช้า นอกจากนี้ยังขึ้นอยู่กับประเภทของข้อมูล: การบีบอัดสามารถช่วยได้มากกับ blobs ข้อความขนาดใหญ่ แต่อาจไม่มีประโยชน์กับข้อมูลที่ถูกบีบอัดแล้ว

จากประสบการณ์ของฉันในทางปฏิบัติมีคนที่การบีบอัดเป็นจอกศักดิ์สิทธิ์ของการแสดงและมีความสุขมากกับมัน แต่ในกรณีอื่น ๆ เราต้องเปลี่ยนกลับเป็นข้อมูลที่ไม่มีการบีบอัดเนื่องจากไม่ได้รับการบีบอัด ในขณะที่ภาระงานการเขียนที่หนักมากอาจดูเหมือนเป็นสภาพแวดล้อมที่ไม่ดีสำหรับการบีบอัดหากในกรณีของคุณโดยเฉพาะคุณไม่ได้ทำงานกับ cpu-bound และ memory-bound แต่ iops-bound อาจไม่มีประโยชน์อะไรเลย

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

โดยสรุป: เหตุผลหลักในการใช้ Barracuda คือการจัดการ BLOB innodb_large_prefixความเข้ากันได้ (ดัชนีขนาดใหญ่) และการบีบอัด ไดนามิกบน MySQL 8.0 ตอนนี้เป็นรูปแบบไฟล์เริ่มต้น


1
นี่เป็นคำตอบที่ยอดเยี่ยมและชัดเจนจริงๆ! มันสมเหตุสมผลและเป็นคำตอบที่ฉันต้องการ คุณกำลังพูดถึง MySQL 5.6 (ซึ่งเป็นสิ่งที่ฉันได้อัพเกรดไปเมื่อเร็ว ๆ นี้) และอ้างถึง Facebook เป็นตัวอย่างตามที่ฉันต้องการเนื่องจากพวกเขามักจะต้องเอาชนะความท้าทายก่อนทุกคน น่าเสียดายที่การทดสอบนี้ไม่ง่ายนักเนื่องจากสภาพแวดล้อมการทดสอบจะไม่มีโหลด CPU / IO / RAM เหมือนกับการผลิต แต่แน่นอนว่าฉันจะต้องลองดู! ขอบคุณมากสำหรับเวลาของคุณ.
Nuno

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

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

1
คุณมีเครื่องมือเช่น pt-online-schema-change percona.com/doc/percona-toolkit/2.2/ ......เพื่อสร้างตารางใหม่ในแบบออนไลน์ ฉันเพิ่งกล่าวถึงว่าการผสมตารางบางตัวอาจทำให้การวัด cpu / memory / iops เปลี่ยนแปลงได้ยากขึ้นเนื่องจากการเปลี่ยนแปลงของเครื่องยนต์และแยกความแตกต่างจากการเปลี่ยนแปลงโหลดปกติหรือเนื่องจากการเปลี่ยนแปลงแคชเมื่อสร้างใหม่ นอกจากนี้ยังเป็นการยากที่จะเห็นบนเครื่องที่แตกต่างกับฮาร์ดแวร์ที่แตกต่างกันดังนั้นขอให้โชคดี!
jynus

บน ZFS ไม่เป็นอย่างที่ไม่ดีเมื่อใช้ LZ4 ในระบบไฟล์
เดนิสเดนิซอฟ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.