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.
Source: https://www.percona.com/blog/pgo-or-not-pgo-this-is-the-dilemma-step-2. 8 Sync News only summarizes and links out; content copyright belongs to the authors and original sources.
Đ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ế.
Read the news here, practice coding, follow structured courses and train for IELTS on our sibling products — all connected through one 8 Sync account.
The ecosystem home: product overviews, blog and full pricing.
ExploreLearn along a clear roadmap: videos, auto-graded quizzes, certificates and mentors who ship for a living.
View the roadmap1,000+ DSA problems in Vietnamese, auto-graded across 7 languages — many FREE, right in your browser.
Practice for freeAI grading for all four IELTS skills with detailed rubric feedback.
Try it freeA 22 MB AI IDE for Vietnamese devs.
Download freeOrganizational memory for AI agents.
ExploreAI that staffs your Fanpage and qualifies leads for you.
Try it