MySQL là hệ quản trị cơ sở dữ liệu quan hệ nguồn mở phát triển nhanh nhất với 100 triệu lượt tải xuống cho đến nay. Đây là một lựa chọn phổ biến của cơ sở dữ liệu để sử dụng trong các ứng dụng web và hiện đang được sử dụng bởi nhiều trang web lớn, bao gồm Facebook, Twitter, Wikipedia, Flickr, YouTube, v.v. Bây giờ, hãy cùng tìm hiểu 10 sự thật và mẹo thú vị về MySQL.
Sự thật thú vị và mẹo về MySQL
1. MySQL hỗ trợ tối đa 64 chỉ mục cho mỗi bảng. Mỗi chỉ mục có thể bao gồm 1 đến 16 cột. Kích thước chỉ mục tối đa là 1000 byte (767 cho InnoDB).
2. Kích thước tối đa của một hàng trong bảng MySQL là 65,535 byte. Và giá trị lớn nhất của Số nguyên đã ký là 2.147.483.647 và giá trị của Số nguyên chưa được ký là 4.294.967.295. Trong một bảng hỗn hợp có cả CHAR và VARCHAR, MySQL sẽ thay đổi CHAR thành VARCHAR.
3. Nếu chỉ mục CHÍNH hoặc CHỈ SỐ DUY NHẤT chỉ bao gồm một cột có kiểu số nguyên, bạn cũng có thể tham khảo cột là “_rowid” trong câu lệnh CHỌN.
4. Để thay đổi giá trị của AUTO_INCREMENT, hãy sử dụng “ALTER TABLE
5. Để hạn chế MySQL bị truy cập công khai, hãy sử dụng tùy chọn “bỏ qua mạng” trong tệp cấu hình. Khi nó được kích hoạt, MySQL chỉ lắng nghe các kết nối ổ cắm cục bộ và bỏ qua tất cả các cổng TCP. Và tham số “bind-address” được đặt thành “127.0.0.1” hạn chế MySQL chỉ có thể truy cập được bởi localhost.
6. Nếu MySQL có nhiều kết nối được thiết lập (tức là một trang web không có kết nối liên tục), bạn có thể cải thiện hiệu suất bằng cách đặt thread_cache_size thành giá trị khác 0. 16 là một giá trị tốt để bắt đầu. Tăng giá trị cho đến khi thread_create của bạn không phát triển quá nhanh.
7. NO_AUTO_VALUE_ON_ZERO ngăn tự động tăng thêm 0. Chỉ NULL mới tạo ra số thứ tự tiếp theo. Chế độ này có thể hữu ích nếu 0 đã được lưu trữ trong cột AUTO_INCREMENT của bảng. (Nhân tiện, lưu trữ số 0 không phải là phương pháp được khuyến khích.)
8. Các tùy chọn cấu hình “innodb_analyze_is_persists”, “innodb_stats_persists_sample_pages” và “innodb_stats_transient_sample_pages” cung cấp độ chính xác được cải thiện của thống kê chỉ mục InnoDB và tính nhất quán qua các lần khởi động lại MySQL. InnoDB tính toán trước các thống kê giúp trình tối ưu hóa quyết định chỉ mục nào sẽ sử dụng trong một truy vấn, bằng cách lấy mẫu một phần của chỉ mục. Bạn có thể điều chỉnh số lượng lấy mẫu mà InnoDB thực hiện cho mỗi chỉ mục. Các thống kê kết quả hiện có thể tồn tại qua các lần khởi động lại máy chủ, thay vì được tính toán lại (và có thể thay đổi) do khởi động lại và một số sự kiện thời gian chạy. Số liệu thống kê chính xác hơn có thể cải thiện hiệu suất truy vấn và khía cạnh bền vững có thể giữ cho hiệu suất truy vấn ổn định. Khi tính năng thống kê liên tục được bật, thống kê chỉ được tính toán lại khi bạn chạy BẢNG PHÂN TÍCH cho bảng một cách rõ ràng.
9. InnoDB giải phóng bộ nhớ liên quan đến một bảng đã mở để giảm tải bộ nhớ trên các hệ thống có số lượng bảng khổng lồ. Một thuật toán LRU chọn các bảng đã tồn tại lâu nhất mà không được truy cập. Để dành thêm bộ nhớ cho các bảng đang mở, hãy tăng giá trị của tùy chọn cấu hình –table_definition_cache =#.
10. Đặt tham số table_cache để khớp với số lượng bảng đang mở và kết nối đồng thời. Xem giá trị open_tables và nếu nó đang tăng nhanh, bạn cần tăng kích thước của “table_cache”. Và đối với tham số “open_file_limit”, hãy đặt giới hạn này là 20 + max_connections + table_cache * 2. Nếu bạn có các truy vấn phức tạp thì “sort_buffer_size” và “tmp_table_size” có thể rất quan trọng. Giá trị sẽ phụ thuộc vào độ phức tạp của truy vấn và các tài nguyên có sẵn, nhưng 4Mb và 32Mb, tương ứng là các điểm khởi đầu được khuyến nghị.
Lưu ý:Đây là các giá trị "mỗi kết nối". Vì vậy, hãy xem xét tải của bạn và tài nguyên có sẵn khi thiết lập các thông số này. Ví dụ:sort_buffer_size chỉ được cấp phát nếu MySQL cần thực hiện sắp xếp, hãy cẩn thận để không hết bộ nhớ.