การจำลองแบบ MySQL และการให้ความสำคัญกับการอัพเดท


2

ฉันมีเซิร์ฟเวอร์หลักที่ฉันต้องการปรับเปลี่ยนการดำเนินการเช่น UPDATE ให้เป็น LOW_PRIORITY เพื่อที่พวกเขาจะไม่ได้บล็อกการเลือกเป็นต้นซึ่งจะดีกว่าสำหรับพฤติกรรมที่ผู้ใช้ปลายทางมองเห็นได้

ฉันมีเซิร์ฟเวอร์ทาสที่ฉันทำการประมวลผลแบบแบทช์และฉันไม่สนใจการจัดลำดับความสำคัญของ SELECTs ในการอัปเดต ในความเป็นจริงเนื่องจากทาสใช้ UPDATE และเรียกใช้งานเป็น LOW_PRIORITY และการจำลองแบบเป็นเธรดเดียวสิ่งที่เกิดขึ้นคือการประมวลผลแบบกลุ่มมีแนวโน้มที่จะชะลอการจำลองแบบ

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


เอ็นจิ้นการเก็บข้อมูลใดที่คุณใช้อยู่
Wasif

คำตอบ:


0

เริ่มต้นทาสโดยใช้ --skip-innodb, - low-priority-updates และ --delay-key-write = ALL ตัวเลือกเพื่อรับการปรับปรุงความเร็วที่ปลายทาส ในกรณีนี้ทาสใช้ตาราง MyISAM แบบไม่ใช่ธุรกรรมแทนตาราง InnoDB เพื่อให้ได้ความเร็วมากขึ้นโดยกำจัดค่าใช้จ่ายในการทำธุรกรรม

อ้างอิง: คู่มือ MySQL


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

การข้าม innodb (--skip-innodb) ไม่ได้บังคับ ฉันเข้าใจผิด - อัปเดตลำดับความสำคัญต่ำ จะเกิดอะไรขึ้นถ้าเราเริ่มต้นแบบด้วย --low-priority-updates และไม่เรียกใช้คำสั่ง UPDATE บนต้นแบบที่มี LOW_PRIORITY ในฐานะทาสทั่วไป UPDATE จะมีลำดับความสำคัญสูงกว่า SELECT การเขียนล่าช้าอาจสร้างคิวการเขียนที่ยาว ฉันจะไม่แนะนำให้ทำอะไรกับอาจารย์
Wasif

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