เครื่องยนต์: InnoDB ระยะเวลา. (แน่นอนว่า 1% ของกรณีการใช้งานนั้นดีกว่าด้วยสิ่งอื่น แต่ดูเหมือนว่าคุณไม่ได้ระบุว่าต้องการเครื่องมืออื่น)
เกล็ดหิมะ: แย่มาก โดยเฉพาะอย่างยิ่งหากคุณต้องการค้นหาจาก "ช่วง" โปรดระบุสคีมา (แนะนำให้ใช้ผ่าน แสดงการสร้างตาราง
); ฉันจะเจาะจงมากขึ้น (ฉันอาจเห็นด้วยว่า Snowflake นั้นดี แต่ฉันสงสัย)
สตาร์สคีมา -- ดี การทำให้เป็นมาตรฐานของสตริงทั่วไป: ดี การทำให้ค่า 'ต่อเนื่อง' เป็นปกติ (วันที่, ints, ลอย): ไม่ดี แต่จุดประสงค์คือเพื่อประหยัดพื้นที่ดิสก์ ดังนั้นจึงเพิ่มความเร็วในการสืบค้น
10GB/ปี -- ซึ่งฟังดูเหมือน "ไม่กี่" แถวต่อวินาทีโดยเฉลี่ย หนัก แต่ไม่หนักหนาสาหัส นั่นคือการประมวลผล ETL ดูเหมือนไม่ต้องการความช่วยเหลือ
คลังข้อมูล -- http://mysql.rjweb.org/doc.php/datawarehouse
ล้างข้อมูลเก่า -- นี่เป็นหนึ่งในไม่กี่อย่างที่ใช้สำหรับ การแบ่งพาร์ติชัน
. http://mysql.rjweb.org/doc.php/partitionmaint
การแยกออกเป็นตารางต่างๆ ที่ออนไลน์ไว้ -- น่าจะเป็นเรื่องยุ่งยากแต่มีประโยชน์น้อยมาก
รายงานค่าใช้จ่าย --> ตารางสรุป http://mysql.rjweb.org/doc.php/summarytables ตารางสรุปมีขนาดเล็กกว่าตารางข้อเท็จจริงมาก เป็นที่ยอมรับแม้กระทั่งการทำให้เป็นปกติ
Columnstore - ข้อดีอย่างหนึ่งคือการบีบอัดที่สำคัญ แต่ฉันไม่เห็นว่า 50GB ของคุณจะใหญ่มาก ข้อดีอีกอย่างของ CS คือ "การจัดทำดัชนี" ของทุกคอลัมน์โดยอัตโนมัติ อย่างไรก็ตาม สามารถใช้ได้เพียงคอลัมน์เดียวเท่านั้นสำหรับประสิทธิภาพการค้นหาสองระดับ
4 คอร์ - มากมายสำหรับ InnoDB; แกนเพิ่มเติมจะเป็นประโยชน์สำหรับ CS
RAM 32GB -- มีข้อมูลเพียง 50GB และ 10GB/ปี -- หากคุณดูที่ข้อมูลของปีล่าสุด 32GB ก็เพียงพอแล้ว หากคุณสแกน 50GB บ่อยๆ ก็จะมี I/O จำนวนมาก หากคุณใช้ตารางสรุป 32GB ก็เกินความจำเป็นสำหรับกิจกรรมส่วนใหญ่ (ตารางสรุปอาจมีขนาดต่ำกว่า 10GB และย้อนกลับไปที่จุดเริ่มต้นของข้อมูล ดังนั้นจึงสามารถแคชได้มาก)
32GB + CS -- 50GB ของคุณจะกลายเป็นประมาณ 5GB (แต่ไม่รู้ว่า 32 จะ overkill รึเปล่านะ)
HDD เทียบกับSSD -- SSD เร็วกว่าอย่างเห็นได้ชัด
บรรทัดล่าง (และงบประมาณ) - เทคนิคที่กล่าวถึงข้างต้นสามารถทำให้ InnoDB บน 32GB ฮัมเพลงได้ดีเป็นเวลาหลายปี