บล็อกของ PoundXI
เทคโนโลยี, คอมพิวเตอร์, เขียนโปรแกรม และอื่นๆ

MariaDB 10.7.0 เพิ่ม data type UUID เข้ามาใหม่ เราไม่ต้องเก็บเป็น VARCHAR อีกแล้ว


โพสต์เมื่อ 2022-02-19 โดย PoundXI
เดิมทีหากเราต้องการเก็บข้อมูลที่เป็น UUID เราจะต้องสร้าง data type ที่เป็น VARCHAR(36) ขึ้นมาเก็บ ซึ่งใช้พื้นที่ในการเก็บข้อมูลมากถึง 36 byte โดยประมาณ
แต่ MariaDB 10.7.0 ได้เพิ่ม data type UUID เข้ามาใหม่ ซึ่งใช้พื้นที่ในการเก็บข้อมูลเพียง 16 byte (128-bit) เท่านั้น (ลดลงไปเท่าตัว)

ความเจ๋งอีกอย่างนึงคือ เมื่อเราเปลี่ยน data type จาก VARCHAR(36) ไปเป็น data type UUID เราไม่ต้องแก้ไข query ใดๆ ที่เคยใช้ได้ในตอนที่มันเป็น VARCHAR(36) เลย
เพราะ MariaDB แปลงข้อมูลจาก string ไปจัดเก็บ และตอนดึงข้อมูลมาก็แปลงกลับเป็น string ให้อัตโนมัตินั่นเอง
(ณ วันที่เขียนบทความวันที่ 2022-02-19 MariaDB 10.7.x ยังอยู่ในสถานะ alpha ยังไม่เหมาะจะเอาไปใช้บน production นะครับ!!)

เมื่อผมอยากรู้ว่ามันจะช่วยประหยัดพื้นที่ไปได้มากขนาดไหน และถ้าเอาไปเทียบกับ int มันจะใช้พื้นที่แตกต่างกันขนาดไหน
ผมก็เลยทดลองสร้างตารางขึ้นมา 3 ตาราง ซึ่งแต่ละตารางมีเพียง primary key 1 column, และแต่ละตารางมีข้อมูล 1 แสน record
  1. ตารางเก็บ id ที่เป็น ตัวเลข และมี data type เป็น INT UNSIGNED
  2. ตารางเก็บ id ที่เป็น UUID และมี data type เป็น VARCHAR(36)
  3. ตารางเก็บ id ที่เป็น UUID และมี data type เป็น UUID ที่เป็น data type ตัวใหม่
uuid record

ซึ่งได้ผลดังนี้ครับ
  • INT UNSIGNED ใช้พื้นที่ไป 2.5 MiB
  • VARCHAR(36) ใช้พื้นที่ไป 5.5 MiB
  • UUID ใช้พื้นที่ไป 9.5 MiB
(พื้นที่นี้ผมเข้าใจว่าจะมากกว่าปกติ เพราะต้องมีการทำ index ด้วย)

mariadb 10.7 uuid data type   compare size with int and varchar36

แหล่งอ้างอิง


ความคิดเห็น

ยังไม่มีความคิดเห็น
โปรดเข้าสู่ระบบก่อนแสดงความคิดเห็น