Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để làm cho MEMORY ENGINE mysql lưu trữ nhiều dữ liệu hơn?

Bạn nên điều chỉnh cách bạn tạo và tải bảng

CREATE TABLE sns_memory SELECT * FROM sns WHERE 1=2;
ALTER TABLE sns_memory ENGINE=MEMORY;
INSERT INTO sns_memory SELECT * FROM sns;
DROP TABLE sns;
ALTER TABLE sns_memory RENAME sns;

Điều này sẽ vượt qua mọi giới hạn áp đặt bởi tmp_table_size max_heap_table_size .

Cũng giống như vậy, bạn cần làm hai điều:

Thêm cái này vào /etc/my.cnf

[mysqld]
tmp_table_size=2G
max_heap_table_size=2G

điều này sẽ bao gồm việc khởi động lại mysql. Để đặt các giá trị này trong mysqld ngay bây giờ mà không cần khởi động lại, hãy chạy cái này:

SET GLOBAL tmp_table_size = 1024 * 1024 * 1024 * 2;
SET GLOBAL max_heap_table_size = 1024 * 1024 * 1024 * 2;

Nếu bạn đang kiểm tra các biến trên với

SELECT @@max_heap_table_size;

hoặc

SHOW VARIABLES LIKE 'max_heap_table_size';

bạn có thể nhận thấy rằng chúng dường như không thay đổi sau SET GLOBAL... các câu lệnh. Điều này là do cài đặt chỉ áp dụng cho các kết nối mới đến máy chủ. Tạo một kết nối mới và bạn sẽ thấy các giá trị cập nhật hoặc bạn có thể thay đổi nó trong phiên của mình bằng cách chạy:

SET tmp_table_size = 1024 * 1024 * 1024 * 2;
SET max_heap_table_size = 1024 * 1024 * 1024 * 2;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php mysql so sánh độ dài và vĩ độ, trả về những cái dưới 10 dặm

  2. Cách khôi phục kết xuất MySQL từ máy chủ đến vùng chứa Docker

  3. Cách viết nhiều cột trong mệnh đề với sqlalchemy

  4. Tránh lặp lại các bản ghi hiển thị trong MySQL / PHP

  5. MySql xem hiệu suất