การใช้พื้นที่จัดเก็บแบบเน้นคอลัมน์

การเพิ่มประสิทธิภาพคิวรีใน PostgreSQL

Amy McCarty

Instructor

เน้นคอลัมน์

การจัดเก็บแบบเน้นคอลัมน์

  • ยังคงความสัมพันธ์ระหว่างแถว
id name species age habitat received
01 Bob panda 2 Asia 2018
02 Sunny zebra 3 Africa 2018
03 Beco zebra 10 Africa 2017
04 Coco koala 5 Australia 2016

จัดเก็บในรูปแบบ

สองตาราง ตารางแรกเป็นรายการ id และ species ได้แก่ 01 - panda, 02 - zebra, 03 - zebra, 04 - koala ตารางที่สองเป็นรายการ id และ age ได้แก่ 01 - 2, 02 - 3, 03 - 10, 04 - 5

การเพิ่มประสิทธิภาพคิวรีใน PostgreSQL

เน้น Analytics - เหมาะสมอย่างยิ่ง

คุณสมบัติของการจัดเก็บแบบเน้นคอลัมน์

  • คอลัมน์เดียวกันถูกจัดเก็บไว้ในตำแหน่งเดียวกัน
  • ดึงข้อมูลทุกแถวได้รวดเร็ว
  • คำนวณค่าในคอลัมน์ได้รวดเร็ว

เหมาะกับงาน Analytics

  • การนับ ค่าเฉลี่ย และการคำนวณ
  • การรายงาน
  • การรวมค่าตามคอลัมน์

จัดเก็บในรูปแบบ

สามตาราง ตารางแรกเป็นรายการ id และ name ได้แก่ 01 - Bob, 02 - Sunny, 03 - Beco, 04 - Coco ตารางที่สองเป็นรายการ id และ species ได้แก่ 01 - panda, 02 - zebra, 03 - zebra, 04 - koala ตารางที่สามเป็นรายการ id และ age ได้แก่ 01 - 2, 02 - 3, 03 - 10, 04 - 5

การเพิ่มประสิทธิภาพคิวรีใน PostgreSQL

เน้น Transactional - ไม่เหมาะสม

ยังคงความสัมพันธ์ระหว่างแถว

  • ดึงข้อมูลทุกคอลัมน์ได้ช้า
  • โหลดข้อมูลได้ช้า

เหมาะกับงาน Transactional

  • แทรกและลบระเบียนได้รวดเร็ว

จัดเก็บในรูปแบบ

สามตาราง ตารางแรกเป็นรายการ id และ name ได้แก่ 01 - Bob, 02 - Sunny, 03 - Beco, 04 - Coco ตารางที่สองเป็นรายการ id และ species ได้แก่ 01 - panda, 02 - zebra, 03 - zebra, 04 - koala ตารางที่สามเป็นรายการ id และ age ได้แก่ 01 - 2, 02 - 3, 03 - 10, 04 - 5

การเพิ่มประสิทธิภาพคิวรีใน PostgreSQL

ตัวอย่างฐานข้อมูล

 

Postgres Citus Data, Greenplum, Amazon Redshift
MySQL MariaDB
Oracle Oracle In-Memory Cloud Store
Clickhouse, Apache Druid, CrateDB
การเพิ่มประสิทธิภาพคิวรีใน PostgreSQL

Information schema

การลดจำนวนคอลัมน์

  • ใช้ SELECT * เท่าที่จำเป็น
SELECT column_name, data_type
FROM information_schema.columns
WHERE table_catalog = 'schema_name'
AND table_name = 'zoo_animals'
column_name data_type
id integer
name text
species text
การเพิ่มประสิทธิภาพคิวรีใน PostgreSQL

Information schema

การลดจำนวนคอลัมน์

  • ใช้ SELECT * เท่าที่จำเป็น
  • ใช้ information schema
SELECT column_name, data_type
FROM information_schema.columns
WHERE table_catalog = 'schema_name'
AND table_name = 'zoo_animals'
column_name data_type
id integer
name text
species text
การเพิ่มประสิทธิภาพคิวรีใน PostgreSQL

การเขียนคิวรี

 

  • ตรวจสอบแต่ละคอลัมน์ด้วยคิวรีแยกกัน
id name species age habitat received
01 Bob panda 2 Asia 2018
02 Sunny zebra 3 Africa 2018
03 Beco zebra 10 Africa 2017
04 Coco koala 5 Australia 2016
-- Structure for column oriented
SELECT MIN(age), MAX(age)
FROM zoo_animals
WHERE species = 'zebra'
-- Structure for row-oriented
SELECT *
FROM zoo_animals
WHERE species = 'zebra'
ORDER BY age
การเพิ่มประสิทธิภาพคิวรีใน PostgreSQL

มาฝึกกันเถอะ!

การเพิ่มประสิทธิภาพคิวรีใน PostgreSQL

Preparing Video For Download...