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
- ตารางเก็บ id ที่เป็น ตัวเลข และมี data type เป็น INT UNSIGNED
- ตารางเก็บ id ที่เป็น UUID และมี data type เป็น VARCHAR(36)
- ตารางเก็บ id ที่เป็น UUID และมี data type เป็น UUID ที่เป็น data type ตัวใหม่
ซึ่งได้ผลดังนี้ครับ
- INT UNSIGNED ใช้พื้นที่ไป 2.5 MiB
- VARCHAR(36) ใช้พื้นที่ไป 5.5 MiB
- UUID ใช้พื้นที่ไป 9.5 MiB
แหล่งอ้างอิง
- https://mariadb.com/kb/en/uuid-data-type/
- https://mariadb.com/kb/en/mariadb-1070-release-notes/
- https://mariadb.com/kb/en/varchar/
- https://mariadb.org/10-7-preview-feature-uuid-data-type/
- https://dev.mysql.com/blog-archive/storing-uuid-values-in-mysql-tables/
- https://dev.mysql.com/blog-archive/mysql-8-0-uuid-support/
ความคิดเห็น
ยังไม่มีความคิดเห็น