Số lượng kết nối MySQL

Xin chào _______24______. Sớm hay muộn, khi làm việc với MySQL, sẽ xảy ra lỗi ________25______. Bạn có thể sửa nó một cách dễ dàng và thậm chí không cần khởi động lại dịch vụ bằng cách chỉ thay đổi một tham số - max_connections, do đó tăng số lượng kết nối được phép

Theo mặc định, tham số _______26_______ được đặt thành 100 - đây là giá trị mặc định của nó ngay cả khi nó không được chỉ định trong tệp cấu hình MySQL. Bạn có thể xem giá trị hiện tại của tham số này đơn giản bằng cách kết nối với bàn điều khiển mysql và thực hiện một trong các lệnh sau

_______0_______

Đầu ra của lệnh này sẽ giống như thế này (giá trị mặc định là _______29_______)

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 100   |
+-----------------+-------+

Ví dụ, bạn có thể tăng giá trị lên

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 100   |
+-----------------+-------+
1 như sau. chạy bàn điều khiển _______29_______ chẳng hạn như người dùng
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 100   |
+-----------------+-------+
3 và chạy lệnh sau

________bốn_______

Các thay đổi sẽ có hiệu lực ngay lập tức, nhưng sẽ tự động đặt lại vào lần khởi động lại MySQL tiếp theo. Để bật tùy chọn này thường xuyên, bạn cần chỉnh sửa tệp cấu hình

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 100   |
+-----------------+-------+
4. Trên CentOS/RedHat, nó được đặt tại
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 100   |
+-----------------+-------+
5

Dưới phần _______1_______6 thêm dòng sau

________số 8_______

Bây giờ, lần khởi động lại MySQL tiếp theo, tham số này sẽ được đọc từ tệp cấu hình. Đó là tất cả. Lợi nhuận


Nếu bạn có câu hỏi, nhận xét và / hoặc nhận xét - hãy vào phần trò chuyện và đăng ký kênh

MySQL và MariaDB là các hệ thống quản lý cơ sở dữ liệu quan hệ (RDMS) được sử dụng rộng rãi nhất khi nói đến lưu trữ trang web và các hệ thống CMS như Joomla, WordPress, Drupal và Typo 3

Lưu trữ dữ liệu MySQL trong các phân vùng riêng biệt

Khi nói đến việc tối ưu hóa và đảm bảo, tốt hơn hết là lưu trữ dữ liệu cơ sở dữ liệu của bạn trên một ổ đĩa riêng biệt được thiết kế dành riêng cho tốc độ và dung lượng lưu trữ, SSD hoặc NVMe. Ngay cả khi hệ thống của bạn gặp sự cố, cơ sở dữ liệu của bạn sẽ an toàn

Đặt số lượng kết nối MySQL tối đa

MySQL/MariaDB sử dụng câu lệnh max_connections chỉ định số lượng kết nối đồng thời hiện được cho phép trên máy chủ. Quá nhiều kết nối dẫn đến mức tiêu thụ bộ nhớ cao cũng như mức sử dụng CPU cao. Đối với các trang web nhỏ, số lượng kết nối có thể là 100-200 và đối với các trang web lớn, có thể cần 500-800 hoặc nhiều hơn. Max_connections có thể được thay đổi linh hoạt bằng truy vấn SQL. Trong ví dụ này, tôi đặt giá trị là 200

mysql -u gốc -p

mysql> đặt max_connections toàn cầu = 200;

Bật Nhật ký truy vấn chậm của MySQL

Truy vấn ghi nhật ký mất nhiều thời gian để hoàn thành giúp dễ dàng tìm và khắc phục sự cố cơ sở dữ liệu hơn. Nhật ký truy vấn chậm có thể được bật bằng cách thêm các dòng sau vào tệp cấu hình MySQL/MariaDB

truy vấn chậm-log=1

truy vấn chậm-log-file= /var/lib/mysql/mysql-slow-query. đăng nhập

long-query-time=1

_______9_______
$ systemctl restart mariadb
$ tail -f /var/lib/mysql/mysql-slow-query.log

Cài đặt gói tối đa được MySQL cho phép

MySQL tách dữ liệu thành các đợt. max_allowed_packet xác định kích thước tối đa của các gói có thể được gửi. Đặt max_allowed_packet quá thấp có thể khiến yêu cầu quá chậm. Nên đặt giá trị lô thành kích thước của lô lớn nhất

Cài đặt công suất bảng tạm thời

tmp_table_size là dung lượng tối đa được sử dụng cho bảng bộ nhớ tích hợp. Nếu kích thước bảng vượt quá giới hạn đã chỉ định, nó sẽ được chuyển đổi thành bảng MyISAM trên đĩa. Trong MySQL/MariaDB, bạn có thể thêm các biến sau vào tệp cấu hình để điều chỉnh kích thước của bảng tạm thời. Bạn nên đặt giá trị này trên máy chủ thành 64 MB trên mỗi GB bộ nhớ

_______12_______
$ systemctl restart mysql
$ systemctl restart mariadb

Đặt kích thước tối đa của bảng bộ nhớ

Max_heap_table_size là một biến được sử dụng trong MySQL để đặt dung lượng tối đa của bảng bộ nhớ. Kích thước của dung lượng tối đa của bảng bộ nhớ phải giống với dung lượng của bảng tạm thời để tránh ghi vào đĩa. Bạn nên đặt giá trị này trên máy chủ thành 64 MB trên mỗi GB bộ nhớ. Thêm dòng sau vào tệp cấu hình MySQL và khởi động lại dịch vụ

[mysqld] 

max_heap_table_size = 64M

Vô hiệu hóa tra cứu DNS ngược cho MySQL

Khi nhận được kết nối mới, MySQL/MariaDB sẽ thực hiện tra cứu DNS để giải quyết địa chỉ IP của người dùng. Điều này có thể gây chậm trễ nếu cấu hình DNS không hợp lệ hoặc có sự cố với máy chủ DNS. Để tắt tra cứu DNS, hãy thêm dòng sau vào tệp cấu hình MySQL và khởi động lại dịch vụ MySQL

________mười sáu_______

Tránh sử dụng trao đổi trong MySQL

Nhân Linux di chuyển một số bộ nhớ tới một phân vùng đĩa đặc biệt được gọi là "không gian hoán đổi" khi hệ thống hết bộ nhớ vật lý. Ở trạng thái này, hệ thống ghi thông tin vào đĩa, thay vì giải phóng một số bộ nhớ. Vì bộ nhớ hệ thống nhanh hơn bộ nhớ đĩa, nên tắt hoán đổi. Hoán đổi có thể bị vô hiệu hóa bằng lệnh sau

________17______

Tăng kích thước vùng đệm InnoDB

MySQL/MariaDB có một công cụ InnoDB có vùng đệm để lưu vào bộ đệm và lập chỉ mục dữ liệu trong bộ nhớ. Nhóm bộ đệm giúp các truy vấn MySQL/MariaDB tương đối nhanh hơn. Chọn kích thước nhóm bộ đệm InnoDB phù hợp yêu cầu một số kiến ​​thức về bộ nhớ hệ thống. Ý tưởng tốt nhất là đặt kích thước nhóm bộ đệm InnoDB thành 80% RAM

Thí dụ

  • Bộ nhớ hệ thống = 4 GB
  • Kích thước vùng đệm = 3,2 GB

Thêm dòng sau vào tệp cấu hình MySQL và khởi động lại dịch vụ

________mười tám_______

Làm việc với Kích thước bộ đệm truy vấn

Chỉ thị bộ đệm truy vấn trong MySQL/MariaDB được sử dụng để lưu trữ tất cả các truy vấn được lặp lại với cùng một dữ liệu. Nên đặt giá trị thành 64 MB và tăng thời gian cho các trang web nhỏ. Không nên tăng kích thước Bộ đệm truy vấn lên GB vì nó có thể làm giảm hiệu suất cơ sở dữ liệu. Thêm dòng sau vào tập tin của tôi. cnf

_______10_______0

Kiểm tra kết nối miễn phí

Tài nguyên được sử dụng bởi các kết nối nhàn rỗi và do đó sẽ bị gián đoạn hoặc làm mới nếu có thể. Các kết nối này vẫn ở trạng thái "ngủ" và có thể duy trì trong thời gian dài. Kiểm tra các kết nối nhàn rỗi bằng lệnh sau

_______10_______1

Truy vấn sẽ liệt kê các quy trình đang ở trạng thái ngủ. Thông thường trong PHP, một sự kiện có thể kích hoạt khi sử dụng mysql_pconnect. Điều này sẽ mở một kết nối MySQL, thực hiện các truy vấn, xóa xác thực và để kết nối mở. Sử dụng lệnh wait_timeout, bạn có thể chấm dứt các kết nối nhàn rỗi. Giá trị mặc định cho wait_timeout là 28800 giây, có thể giảm xuống phạm vi thời gian tối thiểu chẳng hạn như 60 giây. Thêm dòng sau vào tập tin của tôi. cnf

_______10_______2

Tối ưu hóa và sửa chữa cơ sở dữ liệu MySQL

Nếu máy chủ tắt đột ngột, có khả năng lỗi bảng trong MySQL/MariaDB. Có những nguyên nhân khác có thể gây ra sự cố bảng cơ sở dữ liệu, chẳng hạn như quyền truy cập vào cơ sở dữ liệu trong khi quá trình sao chép đang diễn ra, sự cố hệ thống tệp đột ngột. Trong tình huống này, chúng tôi có một công cụ đặc biệt gọi là " mysqlcheck " để kiểm tra, sửa chữa và tối ưu hóa tất cả các bảng trong cơ sở dữ liệu

Sử dụng lệnh sau để thực hiện các hành động sửa chữa và tối ưu hóa

Đối với tất cả các cơ sở dữ liệu

_______10_______3

Đối với một cơ sở dữ liệu cụ thể

_______10_______4

Thay dbname bằng tên cơ sở dữ liệu của bạn

  1. Kiểm tra hiệu suất MySQL/MariaDB bằng Công cụ kiểm tra

Nên kiểm tra hiệu suất cơ sở dữ liệu MySQL/MariaDB thường xuyên. Điều này sẽ giúp bạn dễ dàng nhận được báo cáo hiệu suất và điểm cải thiện. Có rất nhiều công cụ có sẵn, trong đó mysqltuner là tốt nhất