Profile-guided optimization (PGO) is explained as a two-pass compilation technique: an instrumented build records per-edge execution counters during a training workload, then a second compilation pass uses those counts to drive inlining, branch layout, hot/cold function splitting, whole-binary function reordering, indirect-call promotion, register allocation trade-offs, and switch/jump-table lowering. The piece argues that what matters is the shape of control flow exercised during training, not the actual data values, which is why MySQL Test Run's broad code-path coverage can transfer well to production performance even though its workload looks nothing like TPCC.
Nguồn: https://www.percona.com/blog/pgo-or-not-pgo-this-is-the-dilemma-step-2. 8 Sync News chỉ tóm tắt và dẫn link; bản quyền nội dung thuộc tác giả và nguồn gốc.
Đang tải bình luận…
ClickHouse phải giải quyết vấn đề memory safety khi viết extension cho Postgres bằng C/C++, do hai ngôn ngữ này không có bảo vệ tự động. Họ xử lý bằng cách thiết lập ranh giới rõ ràng giữa C và C++ code, cùng với việc sử dụng isolated helper processes. Giải pháp này giúp ngăn chặn buffer overflow và memory leak, đặc biệt quan trọng khi xử lý dữ liệu lớn. Lập trình viên nên đọc bài để hiểu cách ClickHouse quản lý memory giữa các ngôn ngữ khác nhau và áp dụng pattern này vào các dự án của mình.
Bài viết này giải quyết các thách thức về an toàn bộ nhớ khi kết hợp C và C++ cho Postgres extensions, từ ranh giới ngôn ngữ sạch sẽ đến các tiến trình trợ lý được cách ly.
Bối cảnh: Compiler code generation đôi khi sử dụng cả hai instruction ud2 và int 3 cho các đoạn code không bao giờ thực thi. Nguyên nhân kỹ thuật: ud2 là một instruction trap không thể bị bỏ qua trên các CPU hiện đại, trong khi int 3 có thể bị xử lý bởi debugger. Hệ quả: Sự lựa chọn giữa hai instruction này ảnh hưởng đến khả năng gỡ lỗi và hiệu năng runtime. Điều đáng học: Việc hiểu sự khác biệt này giúp lập trình viên tối ưu hóa debugging experience và hiểu sâu hơn về behavior của compiler code generation.
Bài viết giải thích sự khác biệt giữa hai chỉ thị trap ud2 và int 3 mà compiler sử dụng cho các đoạn code không bao giờ thực thi, giúp lập trình viên hiểu sâu hơn về cơ chế tối ưu hóa của biên dịch.
Bài viết thảo luận về hiện tượng chuyển đổi kiểu integral promotion và hành vi bất ngờ trong chuyển đổi boolean trong C++. Nguyên nhân kỹ thuật nằm ở cách unscoped enum được xử lý và quy tắc conversion sang boolean, dẫn đến undefined behavior trong một số trường hợp. Hệ quả là các biểu thức như !true == true có thể cho kết quả true thay vì false, gây khó khăn trong việc kiểm tra logic. Điều đáng học là cách xử lý type promotion và conversion trong C++ có thể dẫn đến kết quả phản trực giác, đặc biệt khi làm việc với enum và boolean expressions.
Bài viết này giúp lập trình viên hiểu những hành vi bất ngờ trong biến đổi boolean và các vấn đề liên quan đến quảng tích enum.
Go 1.27 giới thiệu các API vector SIMD đặc thù kiến trúc dưới dạng experimental. API này được phát triển để tận dụng tối đa sức mạnh xử lý song song của các instruction set như AVX-512, NEON, hay SSE2 trên kiến trúc cụ thể. Việc tùy biến theo kiến trúc giúp tăng hiệu năng lên đến 3-4 lần cho các phép tính số học trên vector. Điều đáng học là cách Go cân bằng giữa tính di động và tối ưu hóa hiệu năng, cho phép lập trình viên lựa chọn mức độ tùy chỉnh phù hợp với nhu cầu ứng dụng.
Go 1.27 giới thiệu API vector SIMD cụ thể cho kiến trúc giúp tối ưu hóa hiệu năng ứng dụng.
Trên instance GCP c4d-standard-4, tiến trình MySQL tiêu tốn 10.4 GB RAM dù innodb_buffer_pool_size chỉ được thiết lập là 7168 MB. Khoảng trống này được truy qua 4 lớp: dự kiến overhead từ InnoDB/Performance Schema/thread-buffer, khoảng ~9% mmap chunk padding trên buffer pool, sự tích tụ dirty pages của jemalloc trên DR replica không hoạt động, và nguyên nhân gốc - MALLOC_CONF không được thiết lập khiến decay của background_thread bị vô hiệu hóa. Các sửa chữa gồm giảm buffer pool thành bội số sạch (6144 MB), cắt giảm max_connections từ 3000 xuống 500, bật background_thread của jemalloc với decay 5 giây, và thêm swap để phòng OOM, giúp giảm RSS xuống còn ~7.9 GB. Bài viết cung cấp kiến thức sâu về quản lý memory của MySQL khi sử dụng jemalloc, cách tối ưu buffer pool size và thiết lập MALLOC_CONF phù hợp.
Lập trình viên cần đọc bài này để hiểu cách điều khiển và tối ưu hóa bộ nhớ InnoDB trên MySQL khi các tham số cơ bản như innodb_buffer_pool_size không đủ để giải quyết cảnh báo nhớ, khi hệ thống vẫn tiêu thụ nhiều bộ nhớ hơn dự kiến do các yếu tố như cấu hình bộ nhớ phân vùng, quá trình làm sạch nhớ của jemalloc, hoặc tình trạng replica hoạt động không hiệu quả.
Người thực hành MySQL khuyên không nên dùng các kiểu dữ liệu phức tạp như TIMESTAMP, DATE/TIME hay ENUM, thay vào đó nên dùng các kiểu số đơn giản hơn. Việc sử dụng ENUM gặp vấn đề khi xóa giá trị buộc phải rebuild toàn bộ bảng, cùng lỗi MySQL khiến MIN()/MAX() hoạt động không nhất quán trên ENUM.
Lập trình viên nên đọc bài này để tránh rủi ro về hiệu suất, tính bảo trì và tính nhất quán khi sử dụng các kiểu dữ liệu phức tạp như ENUM và TIMESTAMP trong MySQL, mà thay vào đó có thể áp dụng các giải pháp đơn giản và đáng tin cậy hơn.
Dalibo đã phát hành bản ổn định 1.0 của PostgreSQL Migrator, công cụ mã nguồn mở miễn phí cho phép di chuyển database từ Oracle và MySQL/MariaDB sang PostgreSQL. Được xây dựng hoàn toàn bằng Go, công cụ này cung cấp khả năng kiểm tra catalog ngoại tuyến, đánh giá độ phức tạp, giao diện web tương tác, chuyển đổi schema và dữ liệu, biên dịch SQL/PL-SQL qua công cụ transqlate, và sao chép dữ liệu tốc độ cao. PostgreSQL Migrator hỗ trợ nguồn từ Oracle 11g đến 26ai và MySQL 8.4+/MariaDB 10+, nhắm đến PostgreSQL 16-19, với bản 1.0 hiện chỉ hỗ trợ chuyển đổi roles, schemas, sequences, tables, virtual columns, constraints và indexes. Dự án đạt độ ổn định sau 1 năm beta và release candidates, với cam kết tương thích về cấu hình, CLI và dự án cho tất cả các bản 1.x.
PostgreSQL Migrator 1.0 cung cấp giải pháp toàn diện để chuyển đổi cơ sở dữ liệu từ Oracle và MySQL sang PostgreSQL với nhiều tính năng mạnh mẽ.
Doltgres đã đạt hiệu suất tương đương MySQL nhờ những tối ưu hóa gần đây.
Lập trình viên muốn tối ưu ứng dụng database cho hiệu suất cao và khả năng mở rộng nhanh chóng nên đọc bài này để khám phá cách Doltgres vượt trội so với MySQL trong các trường hợp sử dụng thực tế.
Đọc tin ở đây, luyện code, học theo lộ trình và luyện IELTS trên các sản phẩm anh em — tất cả kết nối với nhau trong hệ sinh thái 8 Sync.
Cổng chính của hệ sinh thái: giới thiệu sản phẩm, blog và bảng giá trọn bộ.
Khám pháHọc theo lộ trình rõ từng chặng: video, quiz chấm tự động, certificate và mentor đang làm nghề.
Xem lộ trình1.000+ bài DSA, đề tiếng Việt, chấm tự động 7 ngôn ngữ — nhiều bài FREE, chạy ngay trên trình duyệt.
Luyện miễn phíChấm bốn kỹ năng IELTS bằng AI, phản hồi chi tiết theo rubric.
Dùng thử miễn phíAI IDE 22 MB cho dev Việt.
Tải miễn phíBộ nhớ tổ chức cho AI agent.
Khám pháAI trực Fanpage, tự sàng lọc lead.
Dùng thử