Làm cách nào để tối ưu hóa Máy chủ MySQL để có hiệu suất tốt hơn? [đóng cửa]


0

Gần đây tôi đã phải làm việc với một hệ thống di sản. Làm việc với nó mất rất nhiều thời gian của tôi vì nhiều bảng không được chuẩn hóa đúng cách. Do vấn đề bảo trì không thể thay đổi. Kỹ sư cao cấp của tôi nói với tôi để tối ưu hóa máy chủ MySQL để có hiệu suất và tốc độ tốt hơn.

Tôi đã thay đổi C:\Program Files\MySQL\MySQL Server 5.6\my.ini tập tin như sau:

key_buffer_size = 128M 30% of your memory (Max 4GB)
max_allowed_packet = 5M
table_open_cache = 256
sort_buffer_size = 10M
read_buffer_size = 20M
read_rnd_buffer_size = 10M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size= 30M
thread_concurrency = 8
bulk_insert_buffer_size = 256
innodb_buffer_pool_size = 5G  to 50% - 70% of your ram.
innodb_additional_mem_pool_size = 1G to to 10% of ram
innodb_log_buffer_size = 1G
innodb_log_file_size = 1G (Max 4GB) larger the file recovery slow.
innodb_file_per_table = 1

Nó hoạt động tốt lúc đầu. Tuy nhiên sau một vài giờ tôi không thể khởi động MySQL và tôi phải cài đặt lại Máy chủ MySQL.

Tôi đã làm gì sai và làm cách nào để khắc phục?


Nhật ký đã nói gì? Oh và đó là nội dung thực tế? 1G (Max 4GB) larger the file recovery slow. trông giống như một cái gì đó được sao chép mà không thèm nghĩ về những gì nó nói.
Seth

vâng, đó là một bản sao dán. Quá trình của bạn tôi đã tăng tốc hơn trước sau khi thay đổi các giá trị đó i my.ini
pippi longstocking

Vẫn không có thêm thông tin nào về thông số kỹ thuật của máy, DB sử dụng động cơ nào và lỗi thực tế nào đã ngăn không cho MySQL xuất hiện, bạn sẽ không nhận được bất kỳ thông tin hữu ích nào (có thể) cấu hình. Tại sao bạn thay đổi cấu hình theo cách này? Đặc biệt là "cài đặt lại máy chủ" không cần thiết nếu đó là lỗi cấu hình. Ngoài ra, có vẻ như bạn đã thực hiện giống nhau đăng trên Stackoverflow là tốt?
Seth

vâng, đây là bản sao của nó Tôi muốn nhận được một câu trả lời nhanh chóng cho điều này. Vì bài đăng trước không nhận được bất kỳ câu trả lời nào, tôi quyết định đăng nó ở đây. Nó cho thấy công cụ db là InnoDB. Và không có lỗi. @seth
pippi longstocking

Vậy làm thế nào bạn xác định rằng bạn không thể khởi động MySQL nếu không có lỗi? Tại sao bạn quyết định cài đặt lại nó? Vui lòng cung cấp câu trả lời cho các câu hỏi khác là tốt. Mô hình sử dụng của DB là gì?
Seth

Câu trả lời:


2

Chỉ để có được một số phối cảnh trích xuất tập tin cấu hình của bạn, tôi đã so sánh với giá trị mặc định ( 1 , 2 ). Ký hiệu sẽ có tham số theo sau là giá trị của bạn và giá trị mặc định trong ngoặc đơn.

key_buffer_size = 128M (8M)
max_allowed_packet = 5M (4M)
table_open_cache = 256 (2000)
sort_buffer_size = 10M (2M)
read_buffer_size = 20M (1M)
read_rnd_buffer_size = 10M (2M)
myisam_sort_buffer_size = 64M (8M)
thread_cache_size = 8 (-1)
query_cache_size= 30M (0/1M)
thread_concurrency = 8 (10)
bulk_insert_buffer_size = 256 (8M)
innodb_buffer_pool_size = 5G (128M)
innodb_additional_mem_pool_size = 1G (8M)
innodb_log_buffer_size = 1G (8M)
innodb_log_file_size = 1G (5M)
innodb_file_per_table = 1 (Off/On)

Như chúng ta có thể thấy bạn tăng hầu hết các bộ nhớ cache đáng kể. Nhưng điều đó có ý nghĩa? Bạn nói DB của bạn đang sử dụng công cụ InnoDB. Theo tài liệu trên key_buffer_size, read_buffer_size, bulk_insert_buffer_size chỉ áp dụng cho cơ sở dữ liệu MyISAM. Tôi không chắc chắn bất cứ khi nào không gian tạm thời sẽ chạy trên đó.

Sử dụng myisam_sort_buffer_size dường như ngược lại đặc biệt là vì các tài liệu nêu: The size of the buffer that is allocated when sorting MyISAM indexes during a REPAIR TABLE or when creating indexes with CREATE INDEX or ALTER TABLE. Vì vậy, nó sẽ được sử dụng hiếm khi trong hầu hết các trường hợp sử dụng bình thường.

Ngoài ra, bạn đang sử dụng các cài đặt sau có vẻ phụ thuộc nhiều vào kiểu sử dụng DB của bạn max_allowed_packet, table_open_cache, thread_cache_size, innodb_log_buffer_size nhưng bạn đã không nói bất cứ điều gì về các mô hình sử dụng. Vì vậy, hãy xem xét xem xét các tài liệu trên để có cái nhìn về những gì họ thực sự làm và so sánh chúng với mô hình sử dụng của DB.

Coi chừng sort_buffer_sizeread_rnd_buffer_size được bảo lưu mỗi phiên. Một số tham số MyISAM cũng có thể là do đó bạn thực sự nhận được khá nhiều chi phí cho mỗi phiên. Một lần nữa bạn cần đánh giá mô hình sử dụng thực tế.

Bây giờ cho các cài đặt InnoDB mà bạn đã chỉ định. innodb_additional_mem_pool_size bị phản đối Không rõ tại sao bạn sửa đổi innodb_log_file_size, innodb_file_per_table không chắc lý do của bạn cho sự thay đổi đó có thể là gì. Cái sau có thể chỉ là mặc định của On? Bằng cách thiết lập cài đặt còn lại của innodb_buffer_pool_size đến một giá trị cao như vậy bạn có thể muốn xem xét sử dụng innodb_buffer_pool_instances cũng.

Nhìn chung, có vẻ như bạn vừa thử một cái gì đó và nó không hoạt động. Theo nhận xét của bạn, bạn thậm chí không nhìn vào các tệp nhật ký MySQL để tìm ra điều gì chịu trách nhiệm cho dịch vụ không chấp nhận kết nối hoặc không xuất hiện. Nếu bạn thực sự muốn tối ưu hóa hiệu suất DB, bạn sẽ phải làm điều đó. Xem xét sử dụng các chỉ mục bổ sung trên các bảng trong đó có thể hợp lý để tăng hiệu suất truy vấn và xem xét các truy vấn nào thực sự được thực hiện trên DB. Ngoài ra, hãy cố gắng hiểu được kiểu sử dụng mà DB có về số lượng kết nối và kích thước của các truy vấn.


1
Lời khuyên tốt, ở đây. table_open_cache là một giá trị đặc biệt tế nhị có lẽ nên được loại bỏ khỏi cấu hình, trừ khi có một lý do rất cụ thể và thử nghiệm đi kèm để chứng minh sự thay đổi. Đề cập đây cùng với trích dẫn yêu thích mọi thời đại của tôi: "'Điều chỉnh' máy chủ của bạn có thể là một sự lãng phí thời gian tuyệt vời."
Michael - sqlbot
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.