Bài viết nằm trong series Multithread từ hardware tới software với Java. Câu hỏi 1: từ các bài trước, khi chia các bài toán ra thành nhiều phần có thể xử lý đồng thời và implement với multi-thread sẽ nhanh hơn single-thread. Vậy nhanh hơn bao nhiêu lần, làm thế nào để tính được con số cụ thể hoặc gần đúng nhất? Câu hỏi 2: lập trình multi-thread có thật sự nhanh hơn single-thread không? Câu hỏi 3: số lượng thread nên bao nhiêu là đủ? Bài viết này sẽ giải đáp 2 mối bận tâm trên. Let's begin!
11/7/2021Bài viết nằm trong series Performance optimization 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. 1) Reindex REINDEX, nghe phát hiểu luôn ý nghĩa, đó là thực hiện build lại index cho index/table/database... REINDEX INDEX index_name; REINDEX TABLE table_name;
8/1/2021Bài viết nằm trong series Performance optimization với PostgreSQL. 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. 1) Vacuum
7/28/2021Bài viết nằm trong series Performance optimization với PostgreSQL. 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. Từ bài này sẽ liên quan nhiều đến practice nên các bạn chuẩn bị env và data trước. Mình sử dụng Docker cho nhanh. Start PostgreSQL và pgAdmin4: docker run -d -p 5432:5432 -e POSTGRES_PASSWORD=postgres postgres
7/27/2021