Hiển thị các bài đăng có nhãn PostgreSQL_Performance Tunning. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn PostgreSQL_Performance Tunning. Hiển thị tất cả bài đăng

Thứ Năm, 17 tháng 11, 2022

Bài 15 - PostgreSQL best practice

Bài viết cuối cùng trong series sẽ nói về một số lỗi hay gặp với PostgreSQL và các best practice để xử lý.

Let’s begin.

Sửa bài viết

Bài 13 - Thực hành Vacuum với PostgreSQL

Phần trước đã tìm hiểu về một mớ lý thuyết của Vacuum, phần này sẽ xem qua về reindex và tập trung vào practice với vacuum để kiểm nghiệm thực tế thế nào. Let’s begin.

Sửa bài viết

Bài 12 - PostgreSQL Vacuum là gì?

PostgreSQL multi-version cuncurrency control giúp giải quyết concurrent read/write nhưng sẽ nảy sinh vấn đề khác:

  • Bloating: UPDATE/INSERT/DELETE nhiều dẫn tới dư thừa số lượng lớn các dead tuple (old record version). Chúng không còn giá trị nhưng vẫn nằm đấy, làm tăng disk space.
  • Wraparound transaction id: số lượng transaction id vượt quá 2^32 có thể dẫn tới sai lệch data.

Bài viết này sẽ tìm hiểu PostgreSQL xử lý chúng thế nào. Let’s begin.

Sửa bài viết

Bài 11 - PostgreSQL multi-version concurrency control

Việc concurrent read/write data tưởng chừng đơn giản nhưng với programming thì không ez tí nào. Chém thế chứ cũng không quá phức tạp khi sử dụng các cơ chế sync/lock, tuy nhiên nó làm giảm performance.

Vậy có cách nào không cần lock mà vẫn concurrent read/write không?

Let’s begin.

Sửa bài viết

Bài 10 - Exclusive lock và Shared lock

Phía client, hay nói cách khác là application, chúng ta tương tác với database thông qua các câu lệnh DML (INSERT/UPDATE/DELETE)… và bản chất tất cả đều được thực thi như một transaction nếu không explicit khai báo và không auto commit.

Sửa bài viết

Bài 09 - Optimistic lock và Pessimistic lock

Với series Multi-thread programming từ hardware đến software, ta biết rằng read/write data với multi-thread có thể dẫn đến data race, vấn đề nhỏ nhưng hậu quả lớn, khiến chương trình sai lệch trầm trọng.

Nghe hơi huy hiểm, nhưng cách giải quyết không có gì phức tạp, sử dụng các cơ chế mutual exclusion là giải quyết được vấn đề này.

Sửa bài viết

Bài 07 - Partitioning data với PostgreSQL P2

Tiếp tục bài trước, cùng đi tìm hiểu về 2 loại partition còn lại là:
  • Partition by list
  • Partition by hash
Sửa bài viết

Bài 06 - Partitioning data với PostgreSQL P1

Một hướng tiếp cận khác có thể tăng query performance là áp dụng partitioning: thay đổi data model implementation. Let’s begin.
Sửa bài viết

Bài 06 - Partitioning data với PostgreSQL P1

Một hướng tiếp cận khác có thể tăng query performance là áp dụng partitioning: thay đổi data model implementation. Let’s begin.
Sửa bài viết

Bài 05 - Hiểu về Join để tăng performance với PostgreSQL

Theo con số thống kê không tin cậy :joy: thì có trên 60% các query sử dụng join table để check điều kiện hoặc lấy thêm thông tin. Ngoài ra, các Senior cũng tâm sự join ảnh hưởng nhiều đến performance,làm chậm hệ thống. Cụ thể nó chậm thế nào, mình thiết kế kém hay do viết query lởm, cùng đi tìm hiểu để có câu trả lời cụ thể nhất.

Sửa bài viết

Bài 04 - Hiểu về Index để tăng performance với PostgreSQL P3

Bài thứ 4 trong series tiếp tục bàn luận về Hash index còn dở dang ở bài trước.

Sửa bài viết

Bài 03 - Hiểu về Index để tăng performance với PostgreSQL P2

Với bài trước, ta đã biết các loại index phổ biến trong Relational Database:

  • B-Tree index.
  • Bitmap index.
  • Hash index.
Sửa bài viết

Bài 02 - Hiểu về Index để tăng performance với PostgreSQL P1

Bài trước chúng ta đã biết về các phương pháp giúp tăng performance của SQL query. Bài hôm nay sẽ giới thiệu về một trong các phương pháp đó, indexing thần thánh.

Sửa bài viết

Bài 01 - Có những cách nào để tối ưu SQL Query?

1) Overview

SQL là ngôn ngữ truy vấn dữ liệu dạng bảng được phát triển vào những năm 1970s. Mặc dù hơn 50 tuổi đời nhưng vẫn được sử dụng phổ biến. Câu hỏi đặt ra, có bí ẩn gì mà nó phổ biến và tồn tại lâu đến vậy?

Sửa bài viết

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master