วันพฤหัสบดีที่ 14 เมษายน พ.ศ. 2559

PostgreSQL : Finish inserting !!! (compare with Sqlite and MySQL)

PostgreSQL compare with Sqlite and MySQL


          เป็นการใส่ข้อมูลเกี่ยวกับคลังเก็บสินค้าที่จะส่งให้ลูกค้า โดยใส่ข้อมูลตารางละ 20 ล้านrecord เท่ากันทั้ง 3 โปรแกรม 
          Sqlite และ MySQL ทำงานบน Windows 7 และ PostgreSQL ทำงานบน Ubuntu

Size

          Sqlite (9.34 GB)

          MySQL (20.9 GB)

          PostgreSQL (17GB)

ภาพแสดงขนาดของ database ในโปรแกรม PostgreSQL
          การเช็คขนาดของ database ทำได้โดยการใช้คำสั่ง \l+ ชื่อdb  ในที่นี้คือ \l+ invtrans 

 _________________________________________________________________


select data from a database

Select ครั้งที่ 1
          เชื่อมสองตารางเข้าด้วยกัน โดยใช้ord_idเป็นเงื่อนไขให้สองตารางเชื่อมกัน คือ ตาราง inv_trans และ order_item ที่มีเลข order เท่ากันจะนำมาเชื่อมกัน เพื่อให้ทราบว่า สินค้าที่จะต้องมีการขนส่งเป็นสินค้าชนิดใด และเลือกมาแต่ข้อมูลที่มีเลข order เท่ากับ 12300000

select i.*,o.ty_group from inv_trans i inner join order_item o
on i.ord_id=o.ord_id and o.ord_id='12300000';



          Sqlite 
                      ใช้เวลา 7 min 52.2 sec
          
          MySQL 
                      ครั้งแรกใช้เวลา 3 min 33.58sec
                      ครั้งที่ 2 ใช้เวลา 39.76 sec
                      ครั้งที่ 3 และครั้งถัดๆไปจะใกล้เคียงกับครั้งที่ 2 ไม่มาก
                      
          PostgreSQL
                      ครั้งแรกใช้เวลา 2 min 9.74sec
                      ครั้งที่ 2 ใช้เวลา 12.2 sec
                      ครั้งที่ 3 ใช้เวลา 5.97 sec
                      ครั้งที่ 4 และครั้งถัดๆไปจะใกล้เคียงกับครั้งที่ 3 ไม่มาก  


ภาพแสดงการ select ครั้งที่ 1 ใช้เวลา 2 min  9.74 sec

ภาพแสดงการ select ครั้งที่ 2 ใช้เวลา 12.2 sec
ภาพแสดงการ select ครั้งที่ 3 ใช้เวลา 5.97 sec

          สรุป  ถ้าเทียบในครั้งแรก PostgreSQL ใช้เวลาในการ select data น้อยที่สุด รองลงมาคือ MySQL และ Sqlite ตามลำดับ


************************************************************************
Select ครั้งที่ 2
          เชื่อมสองตารางเข้าด้วยกัน โดยใช้ trans_id เป็นเงื่อนไขให้สองตารางเชื่อมกัน คือ ตาราง inv_trans และ tr_item ที่มีเลข trans_id เท่ากันจะนำมาเชื่อมกัน เพื่อให้ทราบว่า ตำแหน่งที่ตั้งของสินค้าและ item_id ของสินค้าที่จำต้องส่งไปยังลูกค้า โดยกำหนดให้แสดงแต่ข้อมูลที่มีเลข order เป็น12300000

select i.*,t.loc_id,t.item_id from inv_trans i inner join tr_item t
on i.trans_id=t.trans_id and i.ord_id='12300000';



          Sqlite 
                      ใช้เวลา 5 min 52.79 sec
          
          MySQL 
                      ครั้งแรกใช้เวลา 6 min 55.73 sec
                      ครั้งที่ 2 ใช้เวลา 2 min 30.46 sec
                      ครั้งที่ 3 และครั้งถัดๆไปจะใกล้เคียงกับครั้งที่ 2 ไม่มาก
                      
          PostgreSQL
                      ครั้งแรกใช้เวลา 26.997 sec
                      ครั้งที่ 2 ใช้เวลา 25.31 sec
                      ครั้งที่ 3 ใช้เวลา 6.484 sec
                      ครั้งที่ 4 และครั้งถัดๆไปจะใกล้เคียงกับครั้งที่ 3 ไม่มาก 


ภาพแสดงการ select ครั้งที่ 1 ใช้เวลา 26.997 sec
ภาพแสดงการ select ครั้งที่ 1 ใช้เวลา 25.31 sec
ภาพแสดงการ select ครั้งที่ 1 ใช้เวลา 6.484 sec



          สรุป  ถ้าเทียบในครั้งแรก PostgreSQL ใช้เวลาในการ select data น้อยที่สุด รองลงมาคือ Sqlite และ MySQL ตามลำดับ

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

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