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

bỏ qua sao chép vào bảng tmp trên đĩa mysql

Có hai điều bạn có thể làm để giảm bớt tác động của điều này

TÙY CHỌN # 1:Tăng các biến tmp_table_size và / hoặc max_heap_table_size

Các tùy chọn này sẽ chi phối mức độ lớn của bảng tạm thời trong bộ nhớ trước khi nó bị coi là quá lớn và sau đó chuyển các trang vào đĩa như một bảng MyISAM tạm thời. Các giá trị này càng lớn, bạn càng ít có khả năng bị 'sao chép vào bảng tmp trên đĩa'. Vui lòng đảm bảo máy chủ của bạn có đủ RAM và max_connections được định cấu hình vừa phải nên một kết nối DB đơn lẻ cần nhiều RAM cho các bảng tạm thời của riêng nó.

TÙY CHỌN # 2:Sử dụng đĩa RAM cho bảng tmp

Bạn có thể định cấu hình đĩa RAM trong Linux và sau đó đặt tmpdir trong mysql là thư mục có gắn đĩa RAM.

Để bắt đầu, hãy định cấu hình đĩa RAM trong hệ điều hành

Tạo một thư mục trong Linux có tên / var / tmpfs

mkdir /var/tmpfs

Tiếp theo, thêm dòng này vào / etc / fstab (ví dụ:nếu bạn muốn một đĩa RAM 16GB)

none                    /var/tmpfs              tmpfs   defaults,size=16g        1 2

và khởi động lại máy chủ.

Lưu ý:Có thể tạo đĩa RAM mà không cần khởi động lại. Chỉ cần nhớ vẫn thêm dòng nói trên vào / etc / fstab để có đĩa RAM sau khi máy chủ khởi động lại.

Hiện dành cho MySQL:

Thêm dòng này vào /etc/my.cnf

[mysqld]
tmpdir=/var/tmpfs

và khởi động lại mysql.

TÙY CHỌN # 3:Đưa bảng tmp vào Đĩa RAM càng sớm càng tốt (giả sử bạn áp dụng TÙY CHỌN # 2 trước)

Bạn có thể muốn buộc các bảng tmp vào đĩa RAM càng nhanh càng tốt để MySQL không quay bánh xe của nó khi di chuyển các bảng tmp lớn trong bộ nhớ vào đĩa RAM. Chỉ cần thêm cái này vào /etc/my.cnf:

[mysqld]
tmpdir=/var/tmpfs
tmp_table_size=2K

và khởi động lại mysql. Điều này sẽ làm cho bảng tạm thời dù nhỏ nhất cũng được tồn tại ngay trong đĩa RAM. Bạn có thể chạy định kỳ ls -l /var/tmpfs để xem các bảng tạm thời đến và đi.

Hãy thử !!!

CAVEAT

Nếu bạn không thấy gì ngoài bảng tạm thời trong / var / tmpfs 24/7, điều này có thể ảnh hưởng đến chức năng / hiệu suất của hệ điều hành. Để đảm bảo / var / tmpfs không bị quá tải, hãy xem xét điều chỉnh các truy vấn của bạn. Sau khi làm như vậy, bạn sẽ thấy ít bảng tmp hiển thị hơn trong / var / tmpfs.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao Kết nối MySQL Hibernate này ở chế độ chỉ đọc?

  2. MySql Proccesslist chứa đầy các Mục nhập Ngủ dẫn đến Quá nhiều Kết nối?

  3. Loại bỏ các bản sao bằng chỉ mục duy nhất

  4. Mysql lưu trữ dữ liệu ở đâu?

  5. Tầm quan trọng của độ dài varchar trong bảng MySQL