Lưu trữ theo hàng và phân vùng

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

Amy McCarty

Instructor

Kiểu lưu trữ cơ sở dữ liệu

Lưu trữ theo hàng

  • Giữ quan hệ giữa các 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
Cải thiện hiệu năng truy vấn trong PostgreSQL

Theo hàng

Lưu trữ theo hàng

  • Giữ quan hệ giữa các cột

 

id name species age habitat received
01 Bob panda 2 Asia 2018
Cải thiện hiệu năng truy vấn trong PostgreSQL

Theo cột

Lưu trữ theo cột

  • Giữ quan hệ giữa các hàng  

Hai bảng. Bảng đầu là danh sách id và name. 01 - Bob. 02 - Sunny. 03 - Beco. 04 - Coco. Bảng thứ hai là cùng id với danh sách species. 01 - panda. 02 - zebra. 03 - zebra. 04 - koala.

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

Lưu trữ theo hàng

 

  • Một hàng lưu cùng vị trí
  • Nhanh khi thêm hoặc xóa bản ghi
  • Trả về mọi cột nhanh
    • Trả về mọi hàng chậm
Cải thiện hiệu năng truy vấn trong PostgreSQL

Giảm số hàng

Giảm số hàng

  • Bộ lọc WHERE
  • INNER JOIN
  • DISTINCT
  • LIMIT
Cải thiện hiệu năng truy vấn trong PostgreSQL

Phương pháp CSDL theo hàng

Phân vùng

  • Cách chia một bảng (cha) thành nhiều bảng nhỏ (con)

Chỉ mục

  • Tạo khóa cột đã sắp xếp để tăng tốc tìm kiếm

 

Sử dụng phân vùng và chỉ mục

  • Cần thiết lập và bảo trì
  • Biết được qua quản trị viên CSDL hoặc tài liệu
Cải thiện hiệu năng truy vấn trong PostgreSQL

Cấu trúc phân vùng

Một bảng cha về động vật trong sở thú với bốn bản ghi gồm id, name, species, habitat và year received. 01 - Bob - Panda - age - habitat - received. 02 - Sunny - Zebra - 3 - Africa - 2018. 03 - Beco - Zebra - 10 - Africa - 2017. 04 - Coco - Macaw - 5 - South America - 2016. Có 3 bảng con tương ứng cột habitat. Bảng Asia có một bản ghi cho Bob. Bảng Africa có hai bản ghi cho Sunny và Beco. Bảng South America có một bản ghi cho Coco.

  • Bảng cha
    • Hiển thị trong giao diện CSDL
    • Viết truy vấn tại đây
  • Bảng con
    • Không hiển thị trong giao diện CSDL
    • Truy vấn sẽ tìm trong đây
Cải thiện hiệu năng truy vấn trong PostgreSQL

Cấu trúc phân vùng

Một bảng cha về động vật trong sở thú với bốn bản ghi gồm id, name, species, habitat và year received. 01 - Bob - Panda - age - habitat - received. 02 - Sunny - Zebra - 3 - Africa - 2018. 03 - Beco - Zebra - 10 - Africa - 2017. 04 - Coco - Macaw - 5 - South America - 2016. Có 3 bảng con tương ứng cột habitat. Bảng Asia có một bản ghi cho Bob. Bảng Africa có hai bản ghi cho Sunny và Beco. Bảng South America có một bản ghi cho Coco. Bảng Africa được viền đỏ.

SELECT species
FROM zoo_animals
WHERE habitat = 'Africa'
Cải thiện hiệu năng truy vấn trong PostgreSQL

Tổng quan phân vùng

Là gì

  • Chia một bảng thành nhiều bảng nhỏ

Vì sao

  • Linh hoạt lưu trữ
  • Truy vấn nhanh hơn

Ở đâu

  • Các cột thường dùng để lọc
    • Ngày, vị trí
Cải thiện hiệu năng truy vấn trong PostgreSQL

Đánh giá truy vấn với phân vùng

Bộ lập kế hoạch truy vấn

Nhiều đầu bếp quanh một nồi nấu lớn

EXPLAIN
SELECT species
FROM zoo_animals
WHERE habitat = 'Africa'

Kế hoạch truy vấn

Seq Scan on zoo_animals  (cost=0.00..
17.70 rows=2 width=182)
  Filter: (state_code = 15)
  • Ước tính chi phí (thời gian)
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...