Sử dụng lưu trữ theo cột

Cải thiện hiệu năng truy vấn trong PostgreSQL

Amy McCarty

Instructor

Theo cột

Lưu trữ theo cột

  • Giữ quan hệ giữa các hàng
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

Lưu trữ dạng

Hai bảng. Bảng đầu liệt kê id và species. 01 - panda. 02 - zebra. 03 - zebra. 04 - koala. Bảng thứ hai liệt kê id và age. 01 - 2. 02 - 3. 03 - 10. 04 - 5.

Cải thiện hiệu năng truy vấn trong PostgreSQL

Phù hợp cho phân tích

Thuộc tính lưu trữ theo cột

  • Mỗi cột lưu cùng vị trí
  • Nhanh khi trả về mọi hàng
  • Nhanh cho tính toán theo cột

Tập trung phân tích

  • Đếm, trung bình, tính toán
  • Báo cáo
  • Gộp theo cột

Lưu trữ dạng

Ba bảng. Bảng đầu liệt kê id và name. 01 - Bob. 02 - Sunny. 03- Beco. 04 - Coco. Bảng hai liệt kê id và species. 01 - panda. 02 - zebra. 03 - zebra. 04 - koala. Bảng ba liệt kê id và age. 01 - 2. 02 - 3. 03 - 10. 04 - 5.

Cải thiện hiệu năng truy vấn trong PostgreSQL

Tập trung giao dịch - không phù hợp

Giữ quan hệ hàng

  • Chậm khi trả về mọi cột
  • Chậm khi nạp dữ liệu

Tập trung giao dịch

  • Chèn/xóa bản ghi nhanh

Lưu trữ dạng

Ba bảng. Bảng đầu liệt kê id và name. 01 - Bob. 02 - Sunny. 03- Beco. 04 - Coco. Bảng hai liệt kê id và species. 01 - panda. 02 - zebra. 03 - zebra. 04 - koala. Bảng ba liệt kê id và age. 01 - 2. 02 - 3. 03 - 10. 04 - 5.

Cải thiện hiệu năng truy vấn trong PostgreSQL

Ví dụ cơ sở dữ liệu

 

Postgres Citus Data, Greenplum, Amazon Redshift
MySQL MariaDB
Oracle Oracle In-Memory Cloud Store
Clickhouse, Apache Druid, CrateDB
Cải thiện hiệu năng truy vấn trong PostgreSQL

Information schema

Giảm số cột

  • Hạn chế dùng 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
Cải thiện hiệu năng truy vấn trong PostgreSQL

Information schema

Giảm số cột

  • Hạn chế dùng SELECT *
  • Dùng 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
Cải thiện hiệu năng truy vấn trong PostgreSQL

Viết truy vấn của bạn

 

  • Xem từng cột bằng truy vấn riêng
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
Cải thiện hiệu năng truy vấn trong PostgreSQL

Ayo berlatih!

Cải thiện hiệu năng truy vấn trong PostgreSQL

Preparing Video For Download...