Tôi nên biết gì trước khi phát hành trực tuyến với cơ sở dữ liệu InnoDB?


10

Những điều mà một máy chủ- hoặc quản trị viên DB biết và làm trước khi cung cấp cơ sở dữ liệu InnoDB.

Tôi đang suy nghĩ về những thứ như thiết lập các giá trị chính xác cho innodb_buffer_pool_sizeinnodb_log_file_size

Vì vậy, những điều đơn giản mà bạn có thể quên để cấu hình sẽ khiến ứng dụng sử dụng cơ sở dữ liệu hoạt động ít tối ưu hơn?

Câu trả lời:


14

Có một số tùy chọn cấu hình bạn nên suy nghĩ kỹ trước khi bắt đầu.

Miễn là bạn hoàn toàn không sử dụng myisam, bạn có thể phân bổ gần như tất cả (giữ đủ để hệ điều hành của bạn chạy thoải mái và đủ cho max_connectionsbộ nhớ của bạn) innodb_buffer_pool. Điều hay ho của InnoDB là nó tự xử lý hầu hết tất cả các bộ nhớ, không cần phải tách các thứ như bộ nhớ truy vấn, bộ đệm chính, v.v.

Tôi khuyên bạn nên kích hoạt innodb_file_per_table, đơn giản vì nó giúp việc duyệt hệ thống tệp dễ dàng hơn và xem các bảng và cơ sở dữ liệu khác nhau cần bao nhiêu dung lượng. Bạn vẫn sẽ cần một tệp ibdata chung để sử dụng nội bộ InnoDB, nhưng bạn chỉ có thể định nghĩa nó là 10M:autoextend. Không cần xác định nhiều tệp dữ liệu innodb khác nhau với kích thước được phân bổ trước.

innodb_log_file_sizeinnodb_log_buffer_sizekết hợp phải lớn hơn mười lần đối tượng blob lớn nhất của bạn nếu bạn có nhiều đối tượng lớn. Nếu bạn không (và bạn không nên [ 1 , 2 ]), thực sự không cần phải bận tâm nhiều về nó. Kiểm tra Blog hiệu suất MySQL để biết báo cáo chi tiết về cách tính toán.

Và khi bạn đã chạy MySQL của bạn một lúc, hãy kiểm tra cài đặt của bạn với MySQLTuner hoặc MySQL Tune Primer .

Để có báo cáo chi tiết hơn, hãy thử mysqlreport và để theo dõi trực tiếp, hãy kiểm tra mytop .


Một điều cần nhớ về innodb_file_per_table là các phương thức được sử dụng để khôi phục không gian đĩa là khác nhau. Với các tệp ibdata, bạn có thể khôi phục không gian trong vùng bảng bằng cách xóa khỏi cuối bảng. Với không gian tệp bảng riêng lẻ không được phục hồi bằng cách xóa, người ta phải xây dựng lại bảng với bảng tối ưu hóa để trả lại không gian cho hệ thống tệp. Tối ưu hóa khóa bảng và do đó có thể gây ra thời gian chết trong ứng dụng của bạn.
mtinberg

2

Một "bất ngờ" nhỏ đối với tôi là innodb sử dụng, theo mặc định, một tệp cho tất cả các cơ sở dữ liệu / bảng. Trái ngược với các bảng MyISAM sử dụng một thư mục trên mỗi cơ sở dữ liệu và các tệp trên mỗi bảng / bảngindex.

Điều đó có thể quan trọng nếu bạn được sử dụng để thu nhỏ các tệp vật lý trên cơ sở bảng (tối ưu hóa bảng xxx)

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.