CHIASE123.COM - Diễn đàn chia sẻ kiến thức

Diễn đàn chia sẻ kiến thức
Thứ Sáu, 13:39:44 - 22/11/2024

Thời gian được tính theo giờ UTC + 7 Giờ




Tạo chủ đề mới Gửi bài trả lời  [ 1 bài viết ] 
Người gửi Nội dung
Gửi bàiĐã gửi: 17/10/2023 04:03 
Ngoại tuyến
☀️1/30☀️
☀️1/30☀️
Hình đại diện của thành viên

Ngày tham gia: 08/03/2012 10:58
Bài viết: 1
Đối với những website hiện nay thì database hay còn gọi là cơ sở dữ liệu (CSDL) là một phần quan trọng không thể thiếu. Các website với nhiều nội dung (bài viết, sản phẩm,…) thì database sẽ ngày càng “phình to” dẫn đến việc truy xuất trở nên chậm chạp đáng kể, tiêu tốn nhiều tài nguyên CPU/RAM của máy chủ và nguy hiểm hơn là dẫn đến việc “crash” database.

MySQL Query Cache - Tạo bộ nhớ đệm cache cho MySQL

Có rất nhiều cách để tối ưu database chạy trên nền tảng MySQL và một trong số đó là bật tính năng “Query Caching” (MySQL query cache) được tích hợp sẵn trong MySQL từ phiên bản 4.0.1. Query Caching cho phép lưu lại những câu truy vấn SQL trên RAM để khi có các yêu cầu xử lý truy vấn tương tự vào các lần tiếp theo, máy chủ sẽ không dùng tài nguyên để xử lý nữa mà lấy thông tin đã lưu trữ trên RAM (cache) trước đó trả kết quả ngay.
Bây giờ mình sẽ hướng dẫn các bạn cấu hình Query Caching (MySQL query cache) trên MariaDB (tương tự đối với MySQL)
Đầu tiên các bạn truy cập vào dòng lệnh MySQL với quyền root. Sau đó kiểm tra tính năng Query Caching đã có sẵn trong MySQL hay chưa bằng câu lệnh sau:

MariaDB [(none)]> SHOW VARIABLES LIKE 'have_query_cache';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| have_query_cache | YES |
+------------------+-------+
– Nếu kết quả là “YES” thì phiên bản MySQL bạn đang sử dụng đã hỗ trợ sẵn tính năng này. Tuy nhiên mặc định nó sẽ không được bật lên.
– Nếu kết quả là “NO” thì bạn cần cài lại phiên bản MySQL phù hợp hơn.

Tiếp theo các bạn sẽ gán “query_cache_size” chính là dung lượng lưu trữ các truy vấn đã được cache. Lưu ý dung lượng này nằm trên RAM không phải trên Disk các bạn nhé. Vì vậy tùy thuộc vào cấu hình máy chủ mà các bạn cân đối cho phù hợp. Trong bài viết này mình sẽ gán 64 MB cho cache bằng câu truy vấn sau:
MariaDB [(none)]> SET GLOBAL query_cache_size = 62914560;
Query OK, 0 rows affected (0.00 sec)
Tiếp theo các bạn bật tính năng Query Caching bằng câu truy vấn sau:
MariaDB [(none)]> SET GLOBAL query_cache_type = 1;
Query OK, 0 rows affected (0.00 sec)

query_cache_type có ba tùy chọn sử dụng:
– query_cache_type = 0 là tắt cache
– query_cache_type = 1 hoặc query_cache_type = ON là bật cache
– query_cache_type = DEMAND chỉ cache những truy vấn nào có tùy chọn SQL_CACHE. Dành cho các trường hợp các bạn chỉ muốn cache một vài truy vấn cụ thể nào đó và không cache toàn bộ truy vấn còn lại.

Đến đây thì đã hoàn thành rồi đấy, các bạn kiểm tra lại kết quả bằng truy vấn sau:
MariaDB [(none)]> SHOW STATUS LIKE 'Qc%';
+-------------------------+----------+
| Variable_name | Value |
+-------------------------+----------+
| Qcache_free_blocks | 1 |
| Qcache_free_memory | 61763936 |
| Qcache_hits | 1660 |
| Qcache_inserts | 400 |
| Qcache_lowmem_prunes | 0 |
| Qcache_not_cached | 11 |
| Qcache_queries_in_cache | 130 |
| Qcache_total_blocks | 289 |
+-------------------------+----------+
Trong đó:
– Qcache_free_memory: là dung lượng còn trống được gán bởi tham số query_cache_size phía trên.
– Qcache_inserts: là số lượng query đã thực thi xong và được đưa vào cache.
– Qcache_hits: là số lượng query đã được lấy từ cache.
– Qcache_lowmem_prunes: là số lượng các query không thể cache do thiếu RAM.
Lưu ý:
– Các truy vấn có kèm tùy chọn “SQL_NO_CACHE” thì mặc nhiên câu truy vấn đó sẽ không bị cache.
– Các truy vấn INSERT / UPDATE / DELETE sẽ được thực thi vào trong database mà không bị cache.

– Nếu khởi động lại MySQL các cấu hình trên sẽ mất tác dụng. Để áp dụng vĩnh viễn các bạn cần phải khai báo vào file config của MySQL tại đường dẫn sau:
[root@server ~]# nano /etc/my.cnf
Thêm nội dung sau:
[mysqld]
query_cache_size = 500M
query_cache_type = 1

Một lưu ý nhỏ là các bạn phải thêm nội dung bên dưới mục [mysqld] nhé, nếu thêm nội dung vào sai vị trí sẽ làm MySQL không thể khởi động được.

Sau đó thực hiện khởi động lại MySQL để áp dụng cấu hình mới
[root@server ~]# systemctl restart mysqld

Như vậy có thể thấy rằng khi truy cập vào một bài viết có cùng truy vấn thì Query Caching sẽ giúp giảm tải đi đáng kể tài nguyên máy chủ.
Các truy vấn được cache lại cũng sẽ trả kết quả nhanh hơn so với truy vấn không được cache. Các bạn hay thử tối ưu và trải nghiệm nhé.

Lưu ý:
- Kiểm tra các thông số cache sau khi cài đặt (thực hiện lệnh trong cửa sổ mysql, mariadb):
MariaDB [(none)]> SHOW VARIABLES LIKE 'query_cache%';
MariaDB [(none)]> SHOW VARIABLES LIKE 'innodb_buffer%';
MariaDB [(none)]> SHOW VARIABLES LIKE '%cache%';
MariaDB [(none)]> SHOW VARIABLES LIKE '%buffer%';
- cài đặt tổng cache + buffer = 1/2 tổng số ram của vps, server sao cho Available Memory còn lại dao động khoảng 20-30% tổng số ram của vps, server trở lên để phục vụ các tác vụ khác


Sửa lần cuối: nghiammo1992 10/10/2024 14:11

Đầu trang
 Xem thông tin cá nhân Gửi Email  
 
Hiển thị những bài viết cách đây:  Sắp xếp theo  
Tạo chủ đề mới Gửi bài trả lời  [ 1 bài viết ] 

Thời gian được tính theo giờ UTC + 7 Giờ


Chủ đề tương tự
 Chủ đề   Người gửi   Trả lời   Xem   Bài viết mới nhất 
Không có bài viết chưa xem mới nào trong chủ đề này. [MySQL] Lệnh tìm kiếm và thay thế nội dung trong MySQL

nghiammo1992

0

1308

21/10/2013 00:56

nghiammo1992 Xem bài viết mới nhất vừa gửi

Không có bài viết chưa xem mới nào trong chủ đề này. Hướng dẫn tạo file cache php cho website

nghiammo1992

0

1066

06/06/2016 16:07

nghiammo1992 Xem bài viết mới nhất vừa gửi

Không có bài viết chưa xem mới nào trong chủ đề này. [PHP] SELECT query with PDO

API

0

302

08/09/2024 00:51

API Xem bài viết mới nhất vừa gửi

Không có bài viết chưa xem mới nào trong chủ đề này. [MySQL] Xử lý nội dung trùng lặp trong Database

nghiammo1992

0

1050

04/02/2014 18:07

nghiammo1992 Xem bài viết mới nhất vừa gửi

Không có bài viết chưa xem mới nào trong chủ đề này. [MySQL] Change Collation in Database

nghiammo1992

0

994

17/02/2014 03:07

nghiammo1992 Xem bài viết mới nhất vừa gửi

Không có bài viết chưa xem mới nào trong chủ đề này. [MySQL] Hướng Dẫn Backup Và Restore Database Dung Lượng Lớn (<100Mb, 1Gb~50Gb, >50Gb)

nghiammo1992

0

1406

12/05/2017 21:59

nghiammo1992 Xem bài viết mới nhất vừa gửi

Không có bài viết chưa xem mới nào trong chủ đề này. Hướng dẫn tạo subdomain ảo với .htaccess

nghiammo1992

4

1549

20/11/2013 10:27

nghiammo1992 Xem bài viết mới nhất vừa gửi

Không có bài viết chưa xem mới nào trong chủ đề này. Cần giúp về việc tạo forum

[ Chuyển đến trangChuyển đến trang: 1 ... 32, 33, 34 ]

Nhoxsock0000

330

51520

16/04/2014 21:01

Vipgun98s2 Xem bài viết mới nhất vừa gửi

Không có bài viết chưa xem mới nào trong chủ đề này. Cần người rành về php và tạo wap trên host vào giúp

Gocgiaitri1234

0

1058

19/04/2014 11:39

Gocgiaitri1234 Xem bài viết mới nhất vừa gửi

Không có bài viết chưa xem mới nào trong chủ đề này. Mod tuyển BQT cho john by Vipgun98s2

Vipgun98s2

2

1180

21/03/2014 09:19

Vipgun98s2 Xem bài viết mới nhất vừa gửi

 


Ai đang trực tuyến?

Đang xem chuyên mục này: Không có thành viên nào đang trực tuyến12 khách


Bạn không thể tạo chủ đề mới trong chuyên mục này.
Bạn không thể trả lời bài viết trong chuyên mục này.
Bạn không thể sửa những bài viết của mình trong chuyên mục này.
Bạn không thể xoá những bài viết của mình trong chuyên mục này.

Tìm kiếm với từ khoá:
Chuyển đến:  
Đã tích hợp phpBB® Forum Software © phpBB Group
Vietnamese language pack for phpBB 3.0.x download and support.
CHIASE123.COM - Diễn đàn chia sẻ kiến thức