ของผม opitemrece มีตั้ง 20 กว่าล้าน ครับ
สยามต้องทดลองและตัดสินใจแล้วหล่ะครับ สำหรับพี่ คิดว่าการขยายความกว้างของ opitemrece.staff ทำให้ระบบเสียเวลามากที่สุด จากการทดสอบที่พี่เคยทำเป็นตามนี้
mysql> ALTER TABLE opitemrece MODIFY staff varchar(25);
Query OK, 14325469 rows affected (2 hours 39 min 16.28 sec)
Records: 14325469 Duplicates: 0 Warnings: 0
สำหรับ RAM 32 GB ก็โอเคนะครับ แถมไม่ได้ตัด connection ออกด้วย ทางที่ดีและจะทำให้เร็วขึ้นคือตัด connection ของ client ออกเลย เพราะถึงอย่างไรก็จะใช้งานไม่ได้อยู่แล้ว ถึงจะใช้งานได้ก็จะช้ามากกกก ถึงมากที่สุด ถ้าทำได้น่าจะไม่เกิน 3 ชม. ครับ
การทดสอบกับเครื่อง slave จะทำให้เรารู้ว่ายิ่ง connection น้อยเท่าไร ก็จะเสร็จเร็วขึ้นเท่านั้น แต่อาจจะมองไม่เห็นปัญหากับผู้ใช้งาน เพราะ connection แตกต่างกันมาก
ถ้าทำ ALTER ... แล้วหลังจากนั้นค่อย upgrade structure อีกครั้งครับ คราวนี้ปัญหาการใช้งานก็จะเหมือนการ upgrade ปกติ
ไม่อยากแนะนำให้ใช้วิธีการ upgrade structure แบบปกติ เพราะน่าจะใช้เวลานานข้ามวันข้ามคืนสำหรับ 20 ล้านเรคคอร์ด และ connection เยอะ ๆ เสียเวลา ALTER ... น่าจะดีกว่าครับ