Benchmark Ghi DB
Benchmark Ghi DB - free online developer tool. 100% client-side: your data never leaves your browser.
Thử nghiệm hiệu năng ghi Index Cơ sở dữ liệu
So sánh hiệu năng chèn khóa chỉ mục giữa các mã ID có sắp xếp (ULID / UUID v7) và mã ngẫu nhiên (UUID v4) bằng cách dùng IndexedDB.
Mã có sắp xếp theo thời gian (ULID / UUID v7)
IdleMã ngẫu nhiên không sắp xếp (UUID v4)
IdleBiểu đồ đường cong chi phí ghi khóa chỉ mục
Biểu đồ thể hiện độ trễ giao dịch (ms) của các đợt chèn dữ liệu. Hãy chú ý các đỉnh nhọn độ trễ của UUID v4 do cơ sở dữ liệu phải chia trang chỉ mục (B-Tree Page Splits).
Tại sao có sự chênh lệch hiệu năng này?
Các cơ sở dữ liệu hiện đại (bao gồm IndexedDB, SQLite, PostgreSQL, và MySQL) lưu trữ khóa chính dưới dạng cấu trúc cây B-Tree hoặc B+Tree. Khi bạn chèn các ID tuần tự (ULID, UUID v7), các bản ghi mới luôn được nối thêm vào nhánh tận cùng bên phải của cây chỉ mục, không yêu cầu tái cân bằng cây. Ngược lại, mã ngẫu nhiên (UUID v4) phải chèn vào các vị trí ngẫu nhiên bất kỳ, ép buộc cơ sở dữ liệu phải phân tách trang dữ liệu vật lý (page splits), di chuyển các khối trên đĩa cứng và làm phân mảnh chỉ mục, dẫn đến tốc độ ghi giảm mạnh và phình dung lượng bộ nhớ.