Chạy BẢNG TỐI ƯU để bảng chống phân mảnh để có hiệu suất tốt hơn


12

Tôi đang chạy hệ điều hành Linux 64-bit. Bộ điều chỉnh mysql của tôi đang nói những điều dưới đây:

-------- Thống kê chung ---------------------------------------- ----------
[-] Bỏ qua phiên bản kiểm tra tập lệnh MySQLTuner
[OK] Hiện đang chạy phiên bản MySQL được hỗ trợ 5.1.61-log
[OK] Hoạt động trên kiến ​​trúc 64 bit

-------- Thống kê công cụ lưu trữ --------------------------------------- ----
[-] Trạng thái: -Archive -BDB -Federated + InnoDB -ISAM -NDBCluster
[-] Dữ liệu trong các bảng MyISAM: 1G (Bảng: 1914)
[-] Dữ liệu trong các bảng InnoDB: 4M (Bảng: 199)
[!!] Tổng số bảng phân mảnh: 296

-------- Khuyến nghị bảo mật ---------------------------------------- ---
[OK] Tất cả người dùng cơ sở dữ liệu được gán mật khẩu

-------- Số liệu hiệu suất ---------------------------------------- ---------
[-] Lên cho: 6s (7K q [1K qps], 142 kết nối, TX: 8M, RX: 701K)
[-] Đọc / Viết: 97% / 3%
[-] Tổng bộ đệm: 1.7G toàn cầu + 13.2M mỗi luồng (384 luồng tối đa)
[OK] Sử dụng bộ nhớ tối đa có thể: 6,6G (42% RAM đã cài đặt)
[OK] Truy vấn chậm: 0% (0 / 7K)
[OK] Sử dụng cao nhất các kết nối khả dụng: 5% (20/384)
[OK] Kích thước bộ đệm chính / tổng chỉ số MyISAM: 1.5G / 2.7G
[OK] Tốc độ nhấn bộ đệm chính: 97,4% (553K bộ nhớ cache / 14K lần đọc)
[OK] Hiệu suất bộ đệm truy vấn: 64,6% (Bộ nhớ cache 4K / 6K chọn)
[OK] Truy vấn mận bộ nhớ cache mỗi ngày: 0
[OK] Sắp xếp yêu cầu các bảng tạm thời: 0% (2 loại tạm thời / 337 loại)
[OK] Các bảng tạm thời được tạo trên đĩa: 8% (17 trên đĩa / tổng 198)
[OK] Tốc độ nhấn bộ đệm của luồng: 85% (20 kết nối được tạo / 142)
[OK] Tỷ lệ nhấn bộ đệm bảng: 98% (438 mở / 445 đã mở)
[OK] Mở giới hạn tệp được sử dụng: 10% (856 / 8K)
[OK] Khóa bảng thu được ngay lập tức: 99% (khóa 2K ngay lập tức / 2K)
[OK] Kích thước dữ liệu / vùng đệm của dữ liệu InnoDB: 4.2M / 8.0M


-------- Khuyến nghị ----------------------------------------- ------------
Khuyến nghị chung:
    Chạy BẢNG TỐI ƯU để bảng chống phân mảnh để có hiệu suất tốt hơn
    MySQL bắt đầu trong vòng 24 giờ qua - các khuyến nghị có thể không chính xác

Khuyến nghị của họ là chạy OPTIMIZE TABLEđến các bảng chống phân mảnh để có hiệu suất tốt hơn; Nhưng tôi không biết làm thế nào để chạy nó qua Putty.

Có ai có thể cho tôi mã làm thế nào để tôi chạy nó qua Putty không?

Câu trả lời:


7

OPTIMIZE TABLE là một câu lệnh SQL - chạy nó trong máy khách MySQL.

Trên dòng lệnh của máy chủ, bạn nên cài đặt máy khách dòng lệnh; bạn có thể kết nối với cơ sở dữ liệu của bạn trong máy khách với mysql -u username -p.

Xem tài liệu trênOPTIMIZE TABLE để biết thêm thông tin.


Trang web này là về câu hỏi của các quản trị viên hệ thống chuyên nghiệp.
gparent

@gparent - uhh có nghĩa là câu hỏi, không phải câu trả lời hoàn toàn hợp lệ của Shane?
Mark Henderson

2
@gparent Phải - nhưng tôi không nghĩ thật công bằng khi đánh giá tính chuyên nghiệp của ai đó dựa trên việc biết một câu lệnh SQL khi họ nhìn thấy nó. Nghiên cứu sẽ nhanh chóng đưa ra câu trả lời, nhưng .. Tôi không thích ý tưởng rằng cộng đồng này từ chối các câu hỏi vì quá "rõ ràng".
Shane Madden

Bạn nói đúng, bình luận của tôi hoàn toàn không thuộc về nơi này đó là trường hợp
gparent

1
Tôi không đồng ý với bạn mặc dù, có một nơi mà bạn phải vẽ đường. Tôi nghĩ thật công bằng khi nói rằng một chuyên gia (faq: trong khả năng chuyên nghiệp) hiện đang làm việc với cơ sở dữ liệu MySQL và cố gắng tối ưu hóa chúng nên đủ thành thạo để google thuật ngữ và tìm ra đó là một truy vấn MySQL từ kết quả tìm kiếm đầu tiên. Có lẽ tôi đang mong đợi quá nhiều ở bất kỳ nhân viên nào ..
gparent

18

Bạn cũng có thể thử mysqlcheck -u username -p --auto-repair --optimize --all-databasestrong thiết bị đầu cuối.

Khi chạy "tối ưu hóa bảng", bạn có thể khởi động MySQL như thế này mysql -u username -pvà từ đó bạn có thể thực thi các lệnh. Thông thường lệnh đầu tiên tôi sử dụng là show databases;nhưng bạn thực sự nên tìm một hướng dẫn MySQL trước. Cái đầu tiên xuất hiện trong Google: http://doads.mysql.com/docs/mysql-tutorial-excerpt-5.1-en.pdf

Cho dù bạn có sử dụng putty hay không đều không liên quan. Bạn có thể muốn nói "từ dòng lệnh" thay vì "thông qua Putty."


2
Đây là một giải pháp tốt hơn nhiều so với giải pháp đã được chấp nhận. Không cần liệt kê tất cả các cơ sở dữ liệu và bảng trước khi chạy các lệnh, cộng với sửa chữa tự động.
Sammitch

1
Cũng làm cho mình một ưu tiên và thực hiện sao lưu cơ sở dữ liệu trước khi chạy bất kỳ điều này. mysqldump -u username -p dbname > dbname.sqlgzip dbname.sqlnên làm điều đó độc đáo.
Phòng thí nghiệm Fiasco

Fiasco, tính bằng centos ít nhất, lệnh phải làmysqldump -u username -p db_name > dbname.sql
yitwail
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.