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

ทดลองใส่ข้อมูลจำนวนมากลง PGSQL

    ในสัปดาห์ที่แล้วอ. SPN ให้ลองไปใส่ข้อมูลของเกรดของนศ.ในจำนวนที่มากเป็น 2 เท่าของแรมที่มี ซึ่งตัวผมใช้คอมพิวเตอร์ที่มีแรมทั้งหมด 8 GB ทำให้ต้องใส่ข้อมูลเรื่อยๆจนมีขนาดไฟล์ของ db ที่มากกว่า 16 GB

    โดยวิธีที่ใช้ในการใส่ข้อมูลลงไปในตาราง (Insert) ตัวผมเองนั้นได้ลองใช้วิธีการใช้ Loop While ใน SQL โดย

DO $$
DECLARE
    counter integer := 0;
BEGIN
  WHILE counter <= 160000000 LOOP
      counter := counter + 1 ;
      INSERT INTO public.transcript(
          stu_id, sub_id, year, semester, gpa, comment)
  VALUES ('5801012610067', '010123101',counter, 1, 'A', '');
  END LOOP ;
END $$;

ต้องขอบคุณเว็บ http://www.postgresqltutorial.com สำหรับข้อมูลการใช้งานคำสั่ง

    โดยในตอนแรกได้ทดลองวนลูปใส่ข้อมูล 10 ล้านตัว ซึ่งจะทำให้ขนาดของ Database อยู่ที่ราวๆ 1.7 GB เลยได้ทดลองใส่ข้อมูลจำนวน 160 ล้านตัว ผลที่ได้เป็นดังนี้


ใช้เวลาไปทั้งหมด 2 ชั่วโมง 49 นาที 26 วินาที

ขนาดไฟล์ Database อยู่ที่ราวๆ 27 GB
    
    แต่ทว่าในการลอง Select ข้อมูลออกมาเพื่อชมผลลัพธ์นั้น กับเจอกับสิ่งนี้เแทน


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


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

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