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.
Why read it: 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.
Answer 3 short questions to earn reward points for this article. Only do it if you want the points.
3 questions · under a minute · optional
Source: https://jfg-mysql.blogspot.com/2026/07/best-practice-no-timestamp-nor-enum.html. 8 Sync News only summarizes and links out; content copyright belongs to the authors and original sources.
Đang tải bình luận…
DuckDB 2.0 mang lại hiệu suất vượt trội với recursive CTEs nhanh hơn tới 90x so với phiên bản 1.5.5, kiểu dữ VARIANT xử lý nhanh hơn 6x so với JSON text, và async I/O trên S3 tăng 2.4x. Sự cải thiện đến từ tối ưu hóa engine xử lý, đặc biệt là việc bổ sung cache-aware execution plan và cải thiện cách quản lý memory cho variant data. Điều này cho thấy việc hiểu cách DuckDB lưu trữ và xử lý dữ liệu (đặc biệt với variant và variant types) sẽ giúp tối ưu hóa truy vấn tốt hơn. Bài viết cung cấp những insight thực tế về cách thiết kế schema dữ liệu để tận dụng tối đa hiệu năng mới mà không cần thay đổi code ứng dụng.
DuckDB 2.0 mang đến tốc độ vượt trội với cải tiến đáng kể trong CTE đệ quy, xử lý VARIANT và I/O bất đồng bộ, giúp lập trình viên tối ưu hiệu suất truy vấn dữ liệu.
Bài viết giải thích thiết kế hệ thống từ đơn giản (máy chủ đơn) đến phức tạp (hàng triệu người dùng), bao gồm API, cơ sở dữ liệu, caching, CDN, load balancing và hạ tầng sản xuất.
Bài viết giúp bạn hiểu rõ cách xây dựng cơ sở hạ tầng thực tế từ những nguyên tắc cơ bản nhất, từ đó tránh những sai lầm thường gặp khi mở rộng hệ thống khi còn mới mẻ.
gRPC-Web được ra đời để cho phép các ứng dụng trình duyệt gọi dịch vụ gRPC mà không cần thay đổi máy chủ, nhưng nó dựa trên việc mã hóa lại payload và thường yêu cầu một proxy như Envoy để chuyển đổi giữa HTTP/1.1 của trình duyệt và HTTP/2 của máy chủ. Vì trình duyệt không hỗ trợ nguyên bản HTTP/2, gRPC-Web buộc phải sử dụng định dạng mã hóa đặc biệt và thường chỉ hỗ trợ gọi unary, khiến các tính năng streaming của gRPC bị hạn chế hoặc mất đi. Điều này dẫn đến độ trễ tăng lên, kích thước gói tin lớn hơn và khiến trình duyệt trở thành khách hàng hạng hai so với các client gốc sử dụng gRPC qua HTTP/2. Bài viết gợi ý thay vào đó các nhà phát triển nên cân nhắc sử dụng giao thức RPC gốc cho web như ConnectRPC hoặc tRPC, hoặc đơn giản là REST/GraphQL khi không cần các tính năng streaming mạnh mẽ của gRPC. Bài học là khi chọn RPC cho ứng dụng web, ưu tiên những giải pháp không cần proxy và không làm thay đổi semantics của giao thức gốc để tránh những Overshoot về hiệu suất và tính năng.
Đọc bài này để hiểu cách gRPC-Web đã bị hạn chế trong môi trường web so với gRPC truyền thống, và tìm hiểu về những lỗ hổng về an toàn và hiệu suất, cùng so sánh với các giải pháp RPC phù hợp hơn cho web như Protocol Buffers Web để tối ưu hóa ứng dụng web hiện đại.
ORMs vẫn cần thiết vì chúng cung cấp lớp trừu tượng an toàn, hiệu quả để tương tác với cơ sở dữ liệu, trong khi LLMs chỉ sinh code tiềm ẩn rủi ro lỗi, kém tối ưu và khó bảo trì. ORMs giúp chuẩn hóa truy vấn, tránh SQL injection và tối ưu hóa hiệu suất thông qua caching, điều mà code do LLM sinh ra khó đảm bảo.
Lập trình viên nên đọc bài này để hiểu cách ORM và SQL vẫn giữ vai trò quan trọng trong quản lý dữ liệu cơ bản, giúp tránh rủi ro lỗi và tối ưu hóa hiệu suất khi ứng dụng lớn cần kiểm soát trực tiếp dữ liệu.
Protox 2.1.0 cải thiện hiệu năng đáng kể với giảm ~40% bộ nhớ và ~37% số lần reduction khi mã hóa, cùng ~30% CPU/bộ nhớ khi giải mã. Phiên bản này nâng cấp generator version lên 2, yêu cầu phải regen file cho các phiên bản cũ hơn hoặc compilation sẽ thất bại. Error handling được cải tiến với nhiều invalid field values hơn ném ra EncodingError/DecodingError, và giải mã giờ xử lý wire-type mismatches như unknown fields thay vì misparse. Phiên bản 2.0.0 đã loại bỏ JSON support, bỏ các generated functions thay bằng schema/0, và thay đổi encoding functions để trả về size cùng iodata.
Lập trình viên nên đọc bài này để cập nhật về những thay đổi quan trọng về hiệu năng và API trong Protox v2.1.0.
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ẽ.
Đội ngũ gRPC-Rust vừa hoàn thành bản preview phía client và đang chuẩn bị cho các bước phát triển tiếp theo. Họ cần giải quyết các vấn đề về tính ổn định của API, tích hợp hoàn toàn với mô hình async/await của Rust và nâng cấp lớp mã hoá TLS dựa trên thư viện native-tls. Khi các tính năng này ổn định, nhà phát triển sẽ có thể xây dựng dịch vụ gRPC hoàn toàn bằng Rust mà không cần phụ thuộc vào bản triển khai C++, giảm latency và tối ưu hoá sử dụng bộ nhớ. Dự án cho thấy giá trị của việc phát hành preview sớm để thu thập phản hồi cộng đồng trước khi khóa API, giúp giảm nguy cơ thay đổi phá vỡ sau này. Lộ trình cũng nhấn mạnh tầm quan trọng của việc duy trì sự tương thích ngược với protobuf và cung cấp công cụ codegen tự động qua tonic-build.
Bài này cung cấp lộ trình phát triển tiếp theo của gRPC-Rust giúp lập trình viên nắm định hướng công nghệ và lên kế hoạch phát triển hệ thống hiệu quả.
PostgreSQL mặc định bọc mỗi câu lệnh trong một giao dịch riêng khi không có BEGIN…COMMIT rõ ràng. Tuy nhiên, khi gửi nhiều câu lệnh trong một chuỗi truy vấn đơn (thông qua PQexec hoặc các hàm plpgsql) hoặc sử dụng các tiện ích như COPY và CREATE INDEX CONCURRENTLY, máy chủ sẽ ẩn ý tạo một giao dịch duy nhất bao gồm tất cả các câu lệnh đó. Điều này có thể dẫn đến việc giữ khóa lâu hơn, tiêu thụ ID giao dịch tăng nhanh và làm khó khăn việc rollback một phần công việc khi lỗi xảy ra. Do đó, lập trình viên cần kiểm tra xem ứng dụng của mình có vô tình nhóm nhiều câu lệnh vào một giao dịch ngầm không và cân nhắc sử dụng BEGIN…COMMIT cụ thể khi cần kiểm soát granularity. Theo dõi pg_stat_activity để phát hiện các giao dịch mở dài hạn cũng là biện pháp phòng ngừa tốt.
Bài này giúp lập trình viên hiểu rõ cách Postgres tự động tạo giao dịch nhiều câu lệnh, tránh lỗi và tối ưu hiệu năng.
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