Chiến lược tốt để lập kế hoạch tăng trưởng DB DB là gì?


9

Hy vọng có một số phản hồi về chủ đề tối ưu hóa và duy trì hiệu suất khi cơ sở dữ liệu WordPress phát triển ... để vẽ một bức tranh .... giả sử bạn có một trang web WordPress / Buddypress MU bắt đầu từ khoảng 150kb (cài đặt vanilla) ... theo thời gian, người dùng thêm blog, diễn đàn, bài đăng và nhận xét và cơ sở dữ liệu tăng lên 5mb .... sau đó là 10mb vào năm tới .... Cũng giả sử rằng các điều khiển lưu trữ là một thiết lập được tạo ra tiêu chuẩn như Cpanel hoặc Plesk.

  • Tại thời điểm nào số lượng mục trong hiệu suất cơ sở dữ liệu của trang web mặt trước?
  • Bạn có thể làm gì với tư cách là người quản lý trang web để duy trì hoạt động trơn tru khi cơ sở dữ liệu của bạn phát triển?
  • Bạn có thể mong đợi gì về hiệu suất sau năm 5 khi cơ sở dữ liệu của bạn lớn 500 - 600mb?

Cảm ơn cho bất kỳ thông tin phản hồi bạn có thể có để giữ một con tàu chặt chẽ.

Trân trọng,

S.


3
Bạn đã hỏi 7 câu hỏi và chỉ chấp nhận 1. Không phải là một hồ sơ tốt. :-(

8
25mb là gì. Bạn nên lo lắng về kích thước cơ sở dữ liệu khi nó đạt đến GB.
Dunhamzzz

Cảm ơn phản hồi của bạn. Nếu chúng tôi gặp vấn đề với hiệu suất ở mức 500 mb thì đó có lẽ là công ty lưu trữ của chúng tôi. PS đã trở lại và chấp nhận câu trả lời qua các câu hỏi.
Simon

Câu trả lời:


4

Câu hỏi cụ thể của bạn:

1) Không có giới hạn nghiêm ngặt đối với "số lượng mục nhập" mà DB có thể chứa trước khi hiệu suất bị ảnh hưởng. Hiệu suất chỉ phụ thuộc nhiều vào phần cứng và cấu hình của bạn giống như kích thước và cấu trúc của DB.

2) Nếu bạn lo lắng về khả năng mở rộng của lớp DB, bạn có thể chạy nó trong một cụm hoặc trên hộp đám mây hoặc VPS cho phép thay đổi kích thước. Nếu DB của bạn bắt đầu trở nên chậm chạp, bạn có thể tăng kích thước (mặc dù thường phải trả thêm phí). Các tùy chọn này thêm chi phí, nhưng thực sự là cách tốt nhất để đảm bảo khả năng mở rộng của DB.

3) Điều này thực sự phụ thuộc vào thiết lập lưu trữ và kiến ​​trúc DB của bạn. Nhưng nói chung (trừ khi bạn đang ở trong một hộp thực sự rẻ), tôi sẽ không lo lắng về cơ sở dữ liệu WordPress 30 MB. WordPress thực hiện tốt việc lập chỉ mục các bảng và thậm chí cấu hình OOB MySQL cũng dễ dàng xử lý các truy vấn WordPress trên DB có kích thước này. Khi bạn nhận được vào Gigabyte - đó là lúc bạn có thể cần xem xét nghiêm túc các tùy chọn tối ưu hóa hiệu suất.

Nói chung:

Nếu bạn lo lắng về hiệu suất, hãy tập trung vào điều chỉnh thiết lập MySQL hiện có của bạn và / hoặc thiết lập một lớp bộ đệm. Bộ nhớ đệm có thể giảm đáng kể gánh nặng cho MySQL (đặc biệt là với các trang web WordPress, vì chúng thường thực hiện một số lượng lớn các truy vấn DB).

Nếu sau khi bạn điều chỉnh MySQL đúng cách và thiết lập một lớp bộ nhớ đệm hợp lý, bạn vẫn lo lắng về việc vượt quá cấu hình phần cứng của mình, bạn có thể đưa ra chính sách xóa nội dung sau x lượng thời gian.

Không có thứ gì trong số này là dành riêng cho WordPress. Và tôi không chắc chắn rằng câu hỏi có bất kỳ câu trả lời nào không áp dụng cho bất kỳ trang web hoặc ứng dụng nào đang chạy trên ngăn xếp LAMP. Nhưng có lẽ ai đó có đề xuất liên quan đến cấu trúc bảng MU hoặc các thủ thuật DB cụ thể khác của WP ... Tôi không biết.


4

Nghiêm khắc từ quan điểm của MySQL, tôi có đề xuất về cách cải thiện bộ đệm dữ liệu / chỉ mục cho Trường hợp MySQL.

Hãy nhớ rằng có hai Công cụ lưu trữ chính cho MySQL

  • MyISAM
  • InnoDB

Cơ chế lưu trữ của họ là khác nhau. Có một số thứ bạn có thể làm để điều chỉnh cho Storage Engine mà bạn chọn.

MyISAM

MyISAM chỉ lưu trữ các trang chỉ mục. Nó không bao giờ lưu trữ dữ liệu. Bạn có thể thực hiện hai điều để cải thiện I / O cho các bảng MyISAM.

Cải thiện MyISAM # 1

Bất kỳ bảng MyISAM nào có các cột VARCHAR đều có thể được chuyển đổi bên trong thành CHAR mà không cần chạm vào thiết kế ban đầu. Giả sử bạn có một bảng có tên mydb.mytable và bạn muốn cải thiện I / O cho nó, hãy thực hiện như sau:

ALTER TABLE mydb.mytable ROW_FORMAT=Fixed;

Điều này sẽ tăng kích thước của bảng 60% -100% nhưng sẽ mang lại hiệu suất tăng 20-30% trong I / O mà không thay đổi bất cứ điều gì khác . Tôi đã viết về điều này trước đây trong DBA StackExchange:

Cải thiện MyISAM # 2

Bạn cần tăng MyISAM Key Cache (có kích thước bằng key_buffer_size ). Chạy truy vấn này, xin vui lòng:

SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.4999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1))
recommended_key_buffer_size FROM
(SELECT LEAST(POWER(2,32),KBS1) KBS
FROM (SELECT SUM(index_length) KBS1
FROM information_schema.tables WHERE engine='MyISAM' AND
table_schema NOT IN ('information_schema','mysql','performance_schema')) AA ) A,
(SELECT 2 PowerOf1024) B;

Điều này sẽ cho bạn thấy key_buffer_size lý tưởng dựa trên tập dữ liệu hiện tại của bạn.

InnoDB

InnoDB lưu trữ cả dữ liệu và chỉ mục. Nếu bạn đã chuyển đổi tất cả dữ liệu của mình sang InnoDB và hiện đang chạy WordPress từ cơ sở dữ liệu của InnoDB, bạn cần phải định kích thước Bộ đệm InnoDB của mình (có kích thước bằng innodb_buffer_pool_size ). Chạy truy vấn này, xin vui lòng:

SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.49999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1)) recommended_innodb_buffer_pool_size
FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables
WHERE engine='InnoDB') A,
(SELECT 2 PowerOf1024) B;

Điều này sẽ cho bạn thấy key_buffer_size lý tưởng dựa trên tập dữ liệu hiện tại của bạn.

Dự kiến

Nếu bạn dự đoán rằng tập dữ liệu của bạn sẽ tăng gấp 20 lần, chỉ cần nhân lên gấp bội những gì truy vấn này đề xuất cho 20. Giả sử tập dữ liệu MyISAM của bạn là 15MB và 3MB là tổng chỉ số của bạn. Nếu bạn ước tính rằng bạn sẽ có số lượng dữ liệu gấp 20 lần, hãy đặt key_buffer_size thành 60MB như thế này trong /etc/my.cnf:

[mysqld]
key_buffer_size=60M

sau đó khởi động lại MySQL. Điều tương tự sẽ được áp dụng cho Nhóm đệm InnoDB.

Nếu tất cả dữ liệu của bạn là InnoDB, bạn cần thực hiện Dọn dẹp toàn bộ cơ sở hạ tầng InnoDB mà tôi đã đăng trong StackOverflow .


2

Tại thời điểm nào số lượng mục trong hiệu suất cơ sở dữ liệu của trang web mặt trước?

Khi các truy vấn bắt đầu đạt giới hạn tài nguyên của tài khoản lưu trữ của bạn.

Bạn có thể làm gì với tư cách là người quản lý trang web để duy trì hoạt động trơn tru khi cơ sở dữ liệu của bạn phát triển?

Theo dõi việc sử dụng tài nguyên. Thực hiện các bước để tăng tài nguyên và / hoặc tối ưu hóa việc sử dụng.

Bạn có thể mong đợi gì về hiệu suất sau năm 5 khi cơ sở dữ liệu của bạn lớn 25 - 30mb?

Không nên thay đổi hiệu suất trên cơ sở dữ liệu nhỏ bé đó.

Nếu bạn mong đợi trang web của mình phát triển chậm, thì bạn có nhiều thời gian để học cách quản lý tăng trưởng.

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.