ความเร็วการจำลองแบบ MySQL

สมมติว่าเรามีเซิร์ฟเวอร์ 3 เครื่องบนเครือข่ายท้องถิ่น:

แอป - เซิร์ฟเวอร์แอป php

MASTER - เซิร์ฟเวอร์ฐานข้อมูล Mysql หลัก

ทาส - เซิร์ฟเวอร์ทาส Mysql db (จำลอง MASTER)

ในบล็อคโค้ดเดียว (php) APP แทรกลงใน MASTER โดยดึงข้อมูล Last_insert_id ซึ่งจากนั้นจะใช้เพื่อเลือกข้อมูลที่เพิ่งแทรกจาก SLAVE .

คำถามก็คือ การจำลองจะเกิดขึ้นทันเวลาที่ SLAVE จะได้รับข้อมูลจาก MASTER หรือไม่ สิ่งนี้ได้รับผลกระทบจากโหลดที่ MASTER หรือ SLAVE หรือไม่?

และสุดท้ายนี้ หากมีปัญหาเกี่ยวกับข้อมูลที่มีอยู่ มีวิธีใดที่จะรับประกันว่าจะได้รับข้อมูลล่าสุดจาก SLAVE


person ae.    schedule 17.08.2009    source แหล่งที่มา


คำตอบ (2)


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

1) ฉันเป็นผู้ใช้ที่ทำการดำเนินการ CUD ฉันคาดหวังว่าการดำเนินการ R ในภายหลังจะสะท้อนการเปลี่ยนแปลงที่ฉันเพิ่งทำ ในกรณีนี้ คุณจำเป็นต้องดึงข้อมูลออกจากข้อมูลหลักอย่างแน่นอน เนื่องจากผู้ใช้คาดหวังว่าการเปลี่ยนแปลงของเขาจะมีผล

2) ฉันเป็นผู้ใช้ภายนอก ฉันไม่รู้ว่ามีคำสั่ง CUD เกิดขึ้น และโดยทั่วไปฉันก็ไม่สนใจ ดังนั้นการส่งคืนข้อมูลเก่าจึงเป็นที่ยอมรับได้ (ใน 99% ของการใช้งาน ไม่เช่นนั้นคุณอาจไม่ได้ใช้ PHP* ).

อีกทางเลือกหนึ่งนอกเหนือจาก #1 คือการแจ้งให้ผู้ใช้ทราบว่าการเปลี่ยนแปลงของเขากำลังเผยแพร่ และเป็นที่ยอมรับได้ในบางสถานการณ์ เช่น เว็บไซต์หลายแห่งจะบอกคุณว่า x อาจใช้เวลาถึง y นาทีจึงจะปรากฏ นี่คือสถานการณ์ที่เกิดขึ้นจริง

  • หากคุณต้องการการอัปเดตทันที คุณสามารถลองเขียนลงในเลเยอร์แคชที่ถูกสำรวจพร้อมกับข้อมูล DB (อาจไม่น่าเชื่อถือ) บางอย่างเช่น memcached จะเป็นตัวเลือกที่สำคัญ
person Aea    schedule 17.08.2009

ขึ้นอยู่กับความเร็วที่เซิร์ฟเวอร์ SLAVE ของคุณจำลองข้อมูลจากเซิร์ฟเวอร์ MASTER ของคุณ

หากเชื่อมโยงโดยตรงกับคำสั่ง INSERT, UPDATE และ DELETE ซึ่งหมายความว่าเมื่อคุณแทรกสิ่งใดสิ่งหนึ่ง แสดงว่าคุณกำลังแทรกสิ่งใดสิ่งหนึ่งลงในทั้งสองอย่าง เป็นไปได้มากว่าสิ่งนั้นจะสามารถใช้ได้ในทั้งสองอย่าง

หากเซิร์ฟเวอร์ SLAVE จำลอง MASTER โดยงานที่รันบ่อยครั้งเพื่อดึงข้อมูลจาก MASTER ซึ่งจะมีค่าใช้จ่ายน้อยกว่าการสร้าง 2 Query สำหรับการสืบค้น 1 ครั้ง นั่นหมายความว่าข้อมูลจะไม่พร้อมใช้งานจนกว่างานจะเสร็จสิ้น วิ่ง

person Tyler Carter    schedule 17.08.2009