วันอังคารที่ 20 กุมภาพันธ์ พ.ศ. 2561

Database System - work 6 Try to insert more transcript data to sqlite more than ram


ขั้นตอนการทดลอง

1 .  กำหนดเลขเริ่มต้น
2 .   loop จำนวนมาก count i
3 .  f_name = sarik_<start + count>  , l_name = kumpan<start + count>
4 .  student id = random<55, 60> + 010126 + start + i
5 .  วิชา แต่ละคนเท่ากัน แต่เกรด เซ็ค ไม่เหมือนกัน ใช้การ random
6 .  เพิ่มไปเรื่อยๆ จนได้ขนาดที่พอใจ
โดย มีตัวอย่างโค้ด ที่ใช้ในการเพิ่มข้อมูล ดังนี้


ปัญหาที่พบและทางแก้

แรมมีขนาดใหญ่ การจะ Insert ให้ .db file มีขนาดมากกว่า ram ต้องใช้เวลานานเกินไป

แก้โดยการใช้ VM มาช่วย เพื่อ ใช้ เครื่องที่มี สเปค หน่วยความจำต่ำๆมาใช้งาน

ใช้ Google Cloud Platform



โดยเลือกมาใน service ของ Computer > computer Engin

และการตั้ง เครื่องนั้นกำหนดได้หลากหลายเช่น


ขนาดหน่วยความจำ จำนวน Core รวมทั้ง OS ซึ่งจะมีผลต่อค่าใช้จ่าย ซึ่งผมมีเงินเหลือ จากกิจกรรมที่เขาแจกให้มา 300 เหรียญ นั้นจึงได้นำมาใช้งาน


เปิดเข้า คอมแมนไลน์ ใน SSH ได้จากในภาพ

จากนั้นหลังจากลง Tools ต่างๆ เช่น python sqlite3 แล้ว ก็ ทำการ clone code มาจาก github 


และทำการเพิ่มขนาดไฟล์จนได้ขนาด ที่ต้องการ เช่น 1.3 GB ( ประมาณ 2x ram )


จากนั้นจึงได้เริ่มทำการทดลอง จับเวลาการ คิวรี่ข้อมูล ต่างๆ ดังนี้



table user 532,330 row ใช้เวลาการ แสดงข้อมูลทั้งหมด 156.828 sec





ต่อมาใน table student_records มีข้อมูล 19,184,513 row แต่ปัญหาคือการ คิวรี่ แสดงข้อมูลทั้งหมด ไม่ทราบว่า เป็นที่ terminal หรือว่า ทาง sqlite เองที่ไม่สามารถแสดง จนครบได้ ซึ่งในภาพจะแสดง ทั้ง 3 ครังที่พยายามแล้วค้าง

จึงได้ เปลี่ยนเป็น การคิวรี่แสดงข้อมูล 2 ล้านแถวแรกแทน



ซึ่งจะใช้เวลา 866.787 วินาที


ซึ่งโดยสรุปแล้ว

ตอนนี้ เท่าที่ลอง ยัง insert ได้อยู่ ในขณะที่ขนาดเกิน 2 เท่าของแรมไปแล้ว
แต่การ คิวรี่นั้น ยังไม่ทราบสามารถ ทีั่ขัดข้อง

ref 

การวัดเวลาคิวรี่


ไม่มีความคิดเห็น:

แสดงความคิดเห็น