Giới hạn bộ nhớ cơ sở dữ liệu MySQL
Vì bạn chỉ có một lượng nhỏ dữ liệu nên không cần tăng Tăng Một số truy vấn dường như kém hiệu quả hơn mức có thể. Nếu bạn có thể xác định như vậy, hãy thảo luận về chúng. Điều này có thể liên quan đến các chỉ mục tốt hơn, chỉ mục tổng hợp, tránh Chi tiết và các quan sát khác
Vậy bạn có thể làm gì thay thế? . Nếu bạn đang sử dụng MyISAM một cách nghiêm túc, bạn cũng có thể thêm kích thước của bộ đệm Hệ thống Hoạt động mà bạn muốn MySQL sử dụng cho bảng của mình. Lấy số này thêm vào số bộ nhớ Hệ điều hành và các ứng dụng khác cần, thêm có thể là 32MB nữa cho mã Máy chủ MySQL và các bộ đệm tĩnh nhỏ khác nhau. Đây là bộ nhớ mà bạn có thể cân nhắc sử dụng khi mới khởi động MySQL Server. Phần còn lại của bộ nhớ có sẵn cho các kết nối. Ví dụ: với máy chủ 8GB, bạn có thể có mọi thứ được liệt kê thêm tối đa 6GB, do đó, bạn còn 2 GB cho chuỗi của mình Mỗi luồng kết nối với máy chủ MySQL sẽ cần bộ đệm riêng. Khoảng 256K được phân bổ cùng một lúc ngay cả khi luồng không hoạt động - chúng được sử dụng theo ngăn xếp luồng mặc định, bộ đệm mạng, v.v. Nếu giao dịch được bắt đầu, một số dung lượng khác có thể tăng lên. Việc chạy các truy vấn nhỏ có thể chỉ làm tăng mức tiêu thụ bộ nhớ cho một luồng nhất định, tuy nhiên, nếu bảng sẽ thực hiện các thao tác phức tạp như quét toàn bộ bảng, sắp xếp hoặc cần các bảng tạm thời thì bộ nhớ có thể được phân bổ nhiều như read_buffer_size, sort_buffer_size, read_rnd_buffer_size, tmp_table_size. Nhưng chúng chỉ được phân bổ theo nhu cầu và được giải phóng sau khi hoàn thành giai đoạn truy vấn nhất định. Một số trong số chúng được phân bổ thành một đoạn duy nhất cùng một lúc, ví dụ tmp_table_size là dung lượng bộ nhớ tối đa mà MySQL sẽ phân bổ cho thao tác này. Lưu ý rằng nó phức tạp hơn một lần bạn có thể nghĩ - nhiều bộ đệm cùng loại có thể được phân bổ cho Exampe để xử lý các truy vấn con. Đối với một số truy vấn đặc biệt, việc sử dụng bộ nhớ có thể còn lớn hơn – việc chèn số lượng lớn có thể phân bổ các byte bộ nhớ Bulk_insert_buffer_size nếu được thực hiện cho các bảng MyISAM. myisam_sort_buffer_size được sử dụng cho các lệnh ALTER TABLE, OPTIMIZE TABLE, REPAIR TABLE Đối với các ứng dụng OLTP có mức tiêu thụ bộ nhớ truy vấn đơn giản thường ít hơn 1MB cho mỗi luồng với bộ đệm mặc định và bạn thực sự không cần phải tăng bộ đệm cho mỗi luồng trừ khi bạn có các truy vấn phức tạp. Sắp xếp 10 hàng sẽ nhanh như với bộ đệm sắp xếp 1 MB như với 16 MB (thực ra 16 MB có thể còn chậm hơn nhưng đó là một câu chuyện khác) Một cách tiếp cận khác mà bạn có thể thực hiện là đưa ra dung lượng bộ nhớ mà bạn muốn Máy chủ MySQL sử dụng ở mức cao nhất. Điều này có thể được tính toán dễ dàng bằng bộ nhớ cần thiết cho HĐH, Bộ đệm tệp và các ứng dụng khác. Đối với môi trường 32 bit, bạn cũng nên tính đến giới hạn 32 bit và có thể giới hạn kích thước “mysql” ở mức khoảng 2. 5GB (con số chính xác phụ thuộc vào rất nhiều yếu tố). Bây giờ bạn có thể sử dụng “ps aux” để xem VSZ – Bộ nhớ ảo được cấp phát bởi quy trình MySQL. Bạn cũng có thể xem “Resident Memory” nhưng tôi thấy nó ít hữu ích hơn vì nó có thể bị lỗi do hoán đổi – không phải thứ bạn muốn xem. Theo dõi cách giá trị thay đổi để bạn biết yêu cầu bộ nhớ với cài đặt hiện tại và tăng/giảm giá trị một cách thích hợp Một số người có thể nói, Này, chúng tôi muốn đảm bảo 100% rằng máy chủ của chúng tôi sẽ không bao giờ hết bộ nhớ, bất kể truy vấn hoặc người dùng nào sẽ quyết định chạy. Thật không may, điều này gần như không thể là không thực tế. Đây là lý do tại sao Danh sách các Yêu cầu về Bộ nhớ Máy chủ MySQL hiếm khi được xem xét
Tôi không giả vờ đây là danh sách đầy đủ. Ngược lại, tôi khá chắc chắn rằng mình đã bỏ lỡ điều gì đó (hãy gửi cho tôi một ghi chú nếu bạn có điều gì đó cần bổ sung). Nhưng điểm chính là – có rất nhiều người tiêu dùng bộ nhớ ở đâu đó và cố gắng tìm mức sử dụng cao nhất có thể cho từng người là không thực tế – vì vậy lời khuyên của tôi sẽ là đo lường những gì bạn nhận được trong thực tế và mức tiêu thụ bộ nhớ phản ứng như thế nào với việc thay đổi các biến số khác nhau. Ví dụ: bạn có thể thấy việc tăng sort_buffer_size từ 1MB lên 4MB và 1000 max_connections làm tăng mức tiêu thụ bộ nhớ cao nhất chỉ 30MB chứ không phải 3000MB như bạn có thể đã tính MySQL có giới hạn bộ nhớ không?Kích thước tối đa của bảng MEMORY bị giới hạn bởi biến hệ thống max_heap_table_size, có giá trị mặc định là 16MB .
Làm cách nào để tăng giới hạn bộ nhớ trong MySQL?Để tăng kích thước bộ nhớ cho Máy chủ MySQL, hãy làm theo các bước sau. . Vào chế độ quản lý bằng cách nhập mật khẩu của bạn và nhấn Enter hai lần. . Loại hình. . Xác định vị trí dòng innodb_buffer_pool_size = 1024M và thay đổi số thành 50% RAM của VM. . Nhấn Ctrl + X để thoát khỏi trình soạn thảo văn bản, sau đó nhấn Y để lưu |