Đây là bài viết thứ hai trong loạt bài tối ưu hóa MySQL. Trong bài viết này, tôi sẽ đề cập đến cách tăng tốc tốc độ chọn, cải thiện hiệu suất truy vấn và cải thiện hiệu suất MySQL
Một số khái niệm ở đây sẽ tương tự như các khái niệm trong bài viết trước, vì vậy chúng tôi sẽ tóm tắt chúng và không xem xét lại chúng, trọng tâm chính của chúng tôi là cải thiện hiệu suất của truy vấn chọn MySQL
Bài viết này chỉ đề cập đến việc tối ưu hóa InnoDB, một công cụ lưu trữ MySQL. Mặc dù một số đề xuất ở đây sẽ hoạt động với MyISAM, nhưng bài viết này giả định việc sử dụng InnoDB cho các mẹo về tốc độ truy vấn mysql. [Và cũng cho máy chủ MariaDB và Percona cho MySQL, cơ sở dữ liệu chúng tôi sử dụng thường xuyên]
Lựa chọn máy chủ và phần cứng cho cơ sở dữ liệu máy chủ MySQL
Hãy xem phần này trong bài viết trước của chúng tôi [Mua máy chủ nhanh Xem các mục từ bốn đến sáu];
Đo hiệu suất truy vấn MySQL
Đo lường hiệu suất của MySQL cũng đã được đề cập trong bài viết trước. Một tùy chọn khác là xem thời gian được MySQL báo cáo để thực hiện từng truy vấn [BTW SQL là viết tắt của Ngôn ngữ truy vấn tiêu chuẩn, trong trường hợp hiện tại vẫn chưa rõ], nhưng bạn cần đảm bảo rằng kết quả không được cung cấp từ bộ đệm truy vấn
Một “vấn đề” khác có thể liên quan đến bộ đệm có thể ảnh hưởng đến phép đo là bộ đệm của hệ điều hành. Nếu có đủ bộ nhớ, nó có thể lưu trữ các tệp thô của MySQL và làm sai lệch phép đo
Tạo một chỉ mục
Một chỉ mục là trái tim của mọi cơ sở dữ liệu quan hệ dựa trên SQL, hãy tạo một chỉ mục phù hợp và hiệu suất sẽ tốt
Nếu bạn là một chuyên gia MySQL, bạn có thể bỏ qua phần này, vì bạn có thể biết Index là gì và nó được sử dụng như thế nào
Chọn và quét toàn bộ bảng [chậm chậm chậm]
Để hiểu tại sao cần có các chỉ mục, chúng ta cần biết cách MySQL lấy dữ liệu
Giả sử chúng ta có một lược đồ bảng đơn giản
CREATE TABLE People [ Name VARCHAR[64], Age int[3] ]
Chúng tôi muốn lấy tuổi của John, vì vậy chúng tôi thực hiện một lựa chọn đơn giản
Select Age from People where Name='John'
Điều đó sẽ hoạt động tốt miễn là chúng tôi có một lượng nhỏ dữ liệu, nhưng tốc độ truy vấn MySQL sẽ giảm khi bảng của chúng tôi phát triển
Lý do là MySQL sẽ cần quét mọi hàng trong bảng và so sánh Tên với 'John. ' Nó sẽ chỉ thoát khi tìm thấy nó hoặc không tìm thấy gì
Kiểm tra mọi hàng trong bảng được gọi là quét toàn bộ bảng, không có hiệu suất. Hãy nghĩ về một bảng có 1.000.000.000 hàng [chúng tôi có một số hàng trong kho lưu trữ dữ liệu của mình] và mọi truy vấn MySQL sẽ phải quét toàn bộ dữ liệu. Đó sẽ là điên chậm
Ví dụ: chúng tôi có một bảng có 300 triệu từ khóa. Đối với mục đích gỡ lỗi, thỉnh thoảng chúng tôi cần thực hiện quét toàn bộ bảng. Mất khoảng 5 phút để lấy dữ liệu của chúng tôi
Chỉ mục MySQL là gì?
Các chỉ mục cho phép truy xuất dữ liệu nhanh. Giống như mục lục trong danh bạ điện thoại [nếu bạn nhớ những mục đó], bạn sẽ tìm kiếm Tên và nó sẽ chỉ cho bạn trang có Tên đó
Có một số loại chỉ mục trong MySQL và mỗi loại có trường hợp sử dụng và hiệu suất riêng. Điều cần thiết là chọn đúng cho những gì chúng ta cần
Các loại chỉ mục MySQL
Khóa chính là gì?
Mỗi bảng nên có một khóa chính [trừ khi bạn biết mình đang làm gì]. Khóa chính có thể mở rộng trên nhiều cột, điều này đảm bảo rằng dữ liệu là duy nhất
Vì vậy, trong ví dụ của chúng tôi, nếu chúng tôi đặt khóa chính trên cột Tên, chúng tôi chỉ có thể có một tên 'John', nhưng chúng tôi cũng có thể có 'Beth' và 'Karen. ’
Ưu điểm của khóa chính là MySQL sắp xếp dữ liệu theo cách phù hợp với khóa và đó là khóa nhanh nhất xét về hiệu suất chọn lọc
Chỉ số không gian là gì?
Chỉ mục này dành cho các giá trị hình học và nó được sử dụng cho các mục đích liên quan đến bản đồ và GIS. Tôi chưa bao giờ làm việc trong lĩnh vực đó và chưa bao giờ sử dụng chỉ mục đó
Chỉ số duy nhất là gì?
Chỉ mục này giống như khóa chính ở chỗ nó đảm bảo rằng các cột là một phần của chỉ mục sẽ là duy nhất, nhưng không giống như khóa chính, việc quản lý chỉ mục này chiếm dung lượng và bộ nhớ
Đối với các chỉ mục lớn, bạn có thể cần một bộ nhớ đủ lớn để xử lý mọi thao tác. Tôi đã từng sử dụng phiên bản 16 GB và chỉ mục có 200 triệu hàng;
Chỉ số thông thường là gì?
Chỉ mục thông thường cho phép nhiều giá trị có cùng giá trị;
Chỉ mục toàn văn là gì?
Chỉ mục này cho phép chúng tôi lập chỉ mục các chuỗi con bên trong một cột chuỗi. Điều này hữu ích cho các tìm kiếm chuỗi ký tự đại diện
Chỉ số giảm dần là gì?
Đây là các chỉ mục thông thường, nhưng thứ tự sắp xếp của chúng bị đảo ngược. Điều này được hỗ trợ bởi MySQL 8 [dù sao bạn cũng nên sử dụng] và rất hữu ích để xử lý dữ liệu mới trước
Tôi có nên sử dụng chỉ mục trên một hoặc nhiều hàng không?
Có thể đặt chỉ mục hoặc khóa chính trên nhiều hàng. Làm như vậy cho phép chúng tôi sử dụng cùng một chỉ mục nếu chúng tôi định đặt nhiều hàng trong mệnh đề where
Nếu chúng ta đặt một chỉ mục riêng cho mỗi hàng, kế hoạch thực thi MySQL sẽ tìm tất cả các kết quả từ mỗi mệnh đề where và sau đó chỉ tìm những kết quả khớp với tất cả các chỉ mục
Tìm kiếm tất cả các kết quả và sau đó hợp nhất chúng đồng nghĩa với việc lãng phí rất nhiều tài nguyên. Sử dụng cùng một chỉ mục trên nhiều hàng, kế hoạch thực thi MySQL sẽ chỉ tìm thấy kết quả từ hàng đầu tiên và sau đó nó sẽ chỉ lọc những kết quả đó bằng cách sử dụng mệnh đề where ở hàng thứ hai. Và cứ như vậy cho nhiều hàng hơn
Hạn chế của một chỉ mục trên nhiều hàng là kích thước chỉ mục, đôi khi một chỉ mục có thể trở nên khá lớn, như có thể thấy trong hình bên dưới [được chụp bằng phpmyadmin]
Lược đồ bảng cơ sở dữ liệu MySQL DDL
Trong các đoạn tiếp theo, chúng ta sẽ thảo luận về một lược đồ bảng, vì vậy đây là
CREATE TABLE Search [ SearchID BigInt, Keyword Varchar[64] PRIMARY KEY [SearchID] INDEX idxKeyword [Keyword] ]
Bảng thử nghiệm của chúng tôi có 300 triệu bản ghi. [DDL là viết tắt của Ngôn ngữ định nghĩa dữ liệu]
Kiểm tra xem các lựa chọn của bạn đang hoạt động như thế nào
Thêm chỉ mục và khóa chính không có nghĩa là MySQL sẽ sử dụng chúng, MySQL có logic riêng về cách sử dụng chỉ mục cho một truy vấn nhất định. Đối với các truy vấn chậm hoặc đang chạy nhiều lần, bạn nên kiểm tra xem điều gì xảy ra bên trong
Cách bạn làm là với lệnh 'giải thích. ’ Bạn đặt nó trước lệnh SQL của mình và MySQL cho bạn biết các kế hoạch thực hiện, cho phép bạn xem nó ảnh hưởng như thế nào đến tốc độ truy vấn của MySQL
Kế hoạch thực hiện truy vấn
Mục tiêu chính của cơ sở dữ liệu là lưu trữ dữ liệu và có thể truy xuất dữ liệu nhanh chóng
Trước khi MySQL chạy một truy vấn, nó cần tìm kế hoạch thực hiện tốt nhất cho truy vấn đó
- Chỉ số nào để sử dụng
- Thứ tự của chỉ mục để sử dụng
- Nếu sử dụng phép nối, việc nào cần làm trước
- Vân vân
Đối với các truy vấn, muốn tối ưu chúng ta cần kiểm tra kế hoạch thực hiện [hay còn gọi là Query Plan]. Lý do là những gì chúng tôi nghĩ là đúng cách có thể không phải là đúng cách cho MySQL.
Hơn nữa, các chỉ mục của chúng tôi có thể không sử dụng được cho truy vấn chúng tôi đang chạy.
Giải thích về khóa chính
Ví dụ: hãy giải thích câu lệnh SQL sau
explain SELECT * FROM `Search` where SearchID=1
SearchID là khóa chính;
+----+-------------+--------+------------+-------+---------------+---------+---------+-------+------+----------+-------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+--------+------------+-------+---------------+---------+---------+-------+------+----------+-------+ | 1 | SIMPLE | Search | NULL | const | PRIMARY | PRIMARY | 4 | const | 1 |100.00 | NULL | +----+-------------+--------+------------+-------+---------------+---------+---------+-------+------+----------+-------+
Như chúng ta có thể thấy, MySQL sử dụng khóa chính để thực hiện lựa chọn và sẽ chỉ sử dụng một hàng
Giải thích không có khóa chính
Bây giờ, hãy chọn một hàng không có khóa chính
explain SELECT * FROM `Search` as Search where Results=1;
Kết quả cột không có chỉ mục hoặc khóa chính và kết quả là
+----+-------------+--------+------------+------+---------------+------+---------+------+-----------+----------+-------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+--------+------------+------+---------------+------+---------+------+-----------+----------+-------------+ | 1 | SIMPLE | Search | NULL | ALL | NULL | NULL | NULL | NULL | 245410801 | 10.00 | Using where | +----+-------------+--------+------------+------+---------------+------+---------+------+-----------+----------+-------------+
Quét toàn bộ bảng sẽ rất chậm
Giải thích cho chỉ số
Quá trình tiếp theo của chúng tôi là thực hiện chọn trên một hàng có chỉ mục
explain SELECT * FROM `Search` as Search where Keyword='test';
Và kết quả là
________số 8MySQL sẽ xử lý 49082 hàng, nhưng hãy xem chúng ta thực sự có bao nhiêu hàng
SELECT count[*] FROM `Search` as Search where Keyword='test';
Và kết quả là
Select Age from People where Name='John'0
Có ít hàng hơn so với những gì giải thích cho thấy. Điều này có thể là do cách MySQL quản lý các chỉ mục, nhưng nó vẫn đủ nhanh và không quét toàn bộ bảng
Kiểm tra mệnh đề where cho truy vấn MySQL
Mệnh đề where là một trong những phần quan trọng nhất của mọi truy vấn chọn vì đó là mục đích của cơ sở dữ liệu. lấy dữ liệu cụ thể và nhanh chóng
Điều này có nghĩa là bạn cần đảm bảo rằng các cột được chọn với mệnh đề where được lập chỉ mục hoặc nhỏ để quá trình quét diễn ra nhanh chóng.
Tối ưu hóa chỉ mục MySQL cho mệnh đề where phức tạp
Đoạn 'giải thích' bao gồm một vài ví dụ với chỉ mục trong mệnh đề where, nhưng đó là những ví dụ đơn giản. Hãy hiển thị một ví dụ khác trong đó chúng tôi sử dụng cả khóa chính và chỉ mục
Select Age from People where Name='John'1
Kết quả là
Select Age from People where Name='John'2
Điều này là tốt;
Không có lựa chọn chỉ mục với tính toán trên một ví dụ SQL cột
Hãy cố gắng làm rối nó lên
Select Age from People where Name='John'3
Trong ví dụ này, chúng tôi đang thực hiện phép tính trên cột có khóa chính;
Select Age from People where Name='John'4
Nó đã thực hiện quét toàn bộ bảng, mặc dù chúng tôi có khóa chính. Cách giải quyết là thêm một trường được tính toán trước, lập chỉ mục cho nó và sử dụng trường chỉ mục đó trong mệnh đề where
Loại chỉ mục sai
Hãy thực hiện chọn ký tự đại diện trên một cột được lập chỉ mục
Select Age from People where Name='John'5
Chúng tôi đang tìm kiếm bất kỳ từ khóa nào có chữ 'a' bên trong và MySQL thực hiện điều này
Select Age from People where Name='John'6
Để quét toàn bộ bảng, trong trường hợp này, chúng tôi cần thêm chỉ mục toàn văn vào cột ‘Từ khóa. ’
Tối ưu hóa thứ tự và lựa chọn cột chỉ mục
Ở đây chúng tôi thực hiện một đơn đặt hàng bằng cách sử dụng khóa chính của mình, khóa này cũng nằm trong mệnh đề where
Select Age from People where Name='John'7
Kết quả là
Select Age from People where Name='John'8
Điều đó có nghĩa là MySQL đã sử dụng khóa chính, bây giờ hãy sử dụng chỉ mục làm hệ số sắp xếp
Select Age from People where Name='John'9
Lần này chúng ta có một bất ngờ nho nhỏ
CREATE TABLE Search [ SearchID BigInt, Keyword Varchar[64] PRIMARY KEY [SearchID] INDEX idxKeyword [Keyword] ]0
MySQL không sử dụng chỉ mục của chúng tôi;
Không có chỉ mục trên truy vấn tham gia bảng
Khi thực hiện liên kết giữa một hoặc nhiều bảng [tất cả các loại liên kết. tham gia bên trong, tham gia trái, tham gia phải, v.v. ], đảm bảo rằng cột tham gia mà bạn tham gia được lập chỉ mục. Nếu không, MySQL sẽ cần thực hiện quét toàn bộ bảng để thực hiện phép nối phù hợp
Làm thế nào bạn có thể biết nếu đây là trường hợp? . Bây giờ bạn nên là một chuyên gia về việc sử dụng nó. 😊
Cấu hình hiệu suất MySQL cao
MySQL out of the box cấu hình khiêm tốn và được thiết kế để hỗ trợ các hoạt động cho các trang web như WordPress
Để đạt được hiệu suất mà bạn mong đợi từ cơ sở dữ liệu hiện đại, bạn sẽ cần tinh chỉnh và điều chỉnh cấu hình mặc định
Các cài đặt nằm trong tệp my. cnf. Trong trường hợp của centos, nó nằm dưới /etc/my. cnf
Mẹo điều chỉnh cho cơ sở dữ liệu MySQL của bạn
innodb_buffer_pool_size
Cá nhân tôi tin rằng đây là cài đặt quan trọng nhất của MySQL và nó đặt dung lượng bộ nhớ mà MySQL sử dụng để lưu trữ bảng và dữ liệu chỉ mục. Các cài đặt phải là 75% bộ nhớ vì kích thước không được đặt cố định và MySQL có thể được phân bổ thêm 10% kích thước đã đặt
Ngoài ra, bạn có thể có các ứng dụng khác đang chạy, vì vậy bạn cần dành bộ nhớ cho chúng
Tôi đã giúp một người bạn [chính là người mà tôi đã viết về] và điều đầu tiên tôi kiểm tra ngay cả trước khi cấu trúc bảng là bộ nhớ được cấp phát cho MySQL. Đó là mặc định, là 2GB trên máy của anh ấy. Thay đổi nó thành 48GB tăng hiệu suất đáng kể
innodb-buffer-pool-instance
Số lượng phiên bản vùng đệm được chia thành, điều này là để cho phép xử lý đồng thời tốt hơn với các luồng. Nó chỉ phù hợp nếu vùng đệm lớn hơn 1. 3GB
Trên Windows 32bit, mặc định là kích thước vùng đệm chia cho 128MB. Trên tất cả các hệ thống khác, mặc định là 8
Với bộ xử lý AMD mới, bạn có thể có 64 hoặc 128 lõi và bạn có thể thử nghiệm với giá trị này để xem liệu bạn có đạt được hiệu suất tốt hơn không
tham gia_buffer_size
Cài đặt này cho MySQL biết lượng bộ nhớ cần phân bổ cho bộ đệm nối, được sử dụng trong khi tạo các phép nối
Nếu dữ liệu tham gia quá lớn, MySQL sẽ sử dụng bảng tạm thời trên ổ cứng
Giá trị mặc định là 256KB;
Giá trị này cũng tương đối nhỏ vì các mối nối phải nhỏ, vì vậy trước khi tăng giá trị này, hãy kiểm tra xem thiết kế có đúng không và có thể thay đổi thiết kế là một lựa chọn tốt hơn
Một tùy chọn khác là "gợi ý" trình tối ưu hóa trước một truy vấn có liên kết lớn
Bạn có thể đọc về cài đặt này trong tài liệu kỹ thuật MySQL. https. // nhà phát triển. mysql. com/doc/refman/8. 0/vi/máy chủ-hệ-thống-biến. html#sysvar_join_buffer_size
Tối ưu hóa bảng MySQL
Các bảng MySQL xuống cấp sau khi chèn dữ liệu vào chúng, đó là lý do tại sao có một tùy chọn để tối ưu hóa bảng, cú pháp là
CREATE TABLE Search [ SearchID BigInt, Keyword Varchar[64] PRIMARY KEY [SearchID] INDEX idxKeyword [Keyword] ]1
Thông thường, MySQL sẽ tạo một bảng mới, chèn tất cả dữ liệu vào bảng mới và xây dựng lại các chỉ mục khi hoàn tất
Tối ưu hóa bảng tốn nhiều thời gian và bạn cần đảm bảo rằng bạn có đủ dung lượng trên máy chủ cho bảng tạm thời. Nhiều lần, tôi bị hỏng cơ sở dữ liệu sau khi không có đủ dung lượng. Sau khi bảng được tối ưu hóa, bạn sẽ mong đợi tốc độ truy vấn MySQL và tốc độ chèn MySQL tốt hơn
Nếu bạn không chèn dữ liệu sau khi tối ưu hóa bảng, thì không cần phải tối ưu hóa lại
Tối ưu hóa truy vấn với các gợi ý
Vì chúng tôi biết rõ nhất cách chúng tôi muốn truy cập dữ liệu của mình nên chúng tôi có thể tùy chỉnh truy vấn của mình bằng các gợi ý tối ưu hóa
Có rất nhiều gợi ý và không thể bao gồm tất cả, bạn có thể xem tất cả tại đây. https. // nhà phát triển. mysql. com/doc/refman/8. 0/vi/gợi ý trình tối ưu hóa. html
Tài liệu này bao gồm các gợi ý chúng tôi đã sử dụng và có kinh nghiệm với
Gợi ý trình tối ưu hóa thời gian thực thi câu lệnh cho phép chúng tôi giới hạn thời gian thực hiện của một truy vấn. Giới hạn thời gian thực hiện là điều cần thiết vì một số truy vấn quá dài
Ví dụ: trong máy chủ sản xuất của chúng tôi là khi hợp nhất số lượng chỉ mục và kết quả trả về một triệu hàng trở lên
Trong một số điều kiện nhất định, những truy vấn đó có thể quá dài và chúng tôi thà chấm dứt chúng, cách thực hiện là
CREATE TABLE Search [ SearchID BigInt, Keyword Varchar[64] PRIMARY KEY [SearchID] INDEX idxKeyword [Keyword] ]2
1000 là mili giây để nó cho phép tối đa một giây
Cú pháp gợi ý cài đặt biến
Chúng ta có thể muốn sử dụng một giá trị khác cho biến toàn cục của MySQL, chẳng hạn, chúng ta có thể muốn có bộ đệm sắp xếp lớn hơn chỉ dành cho một truy vấn cụ thể, chúng ta có thể làm như thế này
CREATE TABLE Search [ SearchID BigInt, Keyword Varchar[64] PRIMARY KEY [SearchID] INDEX idxKeyword [Keyword] ]3
SQL_CALC_FOUND_ROWS
Cờ này cho MySQL biết rằng chúng tôi muốn biết số lượng kết quả mà truy vấn trả về, điều này giúp chúng tôi tiết kiệm thời gian để thực hiện hai truy vấn, một cho số lượng [*] và cho dữ liệu thực tế [và do đó tăng tốc truy vấn cơ sở dữ liệu MySQL]. Tôi ước tôi biết nó một năm trước
Một ví dụ sẽ là
CREATE TABLE Search [ SearchID BigInt, Keyword Varchar[64] PRIMARY KEY [SearchID] INDEX idxKeyword [Keyword] ]4
Sau đó, để có được giá trị bạn có thể thực hiện
CREATE TABLE Search [ SearchID BigInt, Keyword Varchar[64] PRIMARY KEY [SearchID] INDEX idxKeyword [Keyword] ]5
Để có được dữ liệu. Giá trị được trả về sẽ phản ánh tổng dữ liệu có sẵn bất kể giới hạn có được sử dụng hay không
OLTP so với OLAP
Có hai mô hình thiết kế cho thiết kế cơ sở dữ liệu
- OLTP – Xử lý giao dịch trực tuyến
- OLAP – Xử lý phân tích trực tuyến
OLTP là gì
OLTP là một thiết kế với mục tiêu cung cấp cả tốc độ chèn và chọn cũng như độ tin cậy, cách sử dụng cổ điển sẽ là quản lý dữ liệu của năm hiện tại trong ngân hàng
- Khách hàng có thể xem các giao dịch của họ
- Ngân hàng có thể chèn hồ sơ mới
- Ngân hàng có thể xóa hoặc sửa đổi hồ sơ hiện có
Một số khái niệm thiết kế được sử dụng trong OLTP
- Chuẩn hóa dữ liệu – Chia dữ liệu thành các bảng nhỏ hơn cho phép lưu trữ dữ liệu nhỏ hơn và thực hiện ít thao tác chèn hơn. Khi truy vấn dữ liệu, một hoặc nhiều liên kết được sử dụng
- Giao dịch – Điều này cho phép khôi phục trong trường hợp có sự cố và giữ các hành động khác nhau dưới dạng một đơn vị nguyên tử
- Giữ tính toàn vẹn tham chiếu bằng cách sử dụng tổ hợp khóa chính/khóa ngoại cho phép bảo vệ chống lại lỗi chèn/xóa dữ liệu
OLAP là gì
OLAP là một thiết kế với mục tiêu chỉ cung cấp các thao tác được chọn và không có thao tác xóa/cập nhật/chèn. Cách sử dụng cổ điển sẽ là quản lý dữ liệu của một năm đã trôi qua trong ngân hàng
- Khách hàng có thể xem hồ sơ của họ
- Hồ sơ không thể thay đổi được nữa. Dữ liệu chỉ được đọc
Một số khái niệm thiết kế của OLAP
- Dữ liệu không được chuẩn hóa nhưng được lưu trong một đốm màu dưới dạng một dòng dài
- Không phải là ý tưởng thiết kế, nhưng để tiết kiệm chi phí, dữ liệu rất có thể sẽ được lưu trên ổ cứng cơ học, điều đó có nghĩa là thiết kế phải nhanh cho các thao tác được chọn
- Cơ sở dữ liệu chứa các bảng tóm tắt, để tiết kiệm thời gian, số liệu thống kê và thông tin khác được tính toán trong giờ nghỉ và được lưu trữ để truy xuất nhanh
Cái nào để chọn?
Thiết kế phù hợp có thể tạo ra hoặc phá vỡ cơ sở dữ liệu. Cũng có thể dữ liệu sẽ có hai vòng đời. Chu kỳ đầu là OLTP, khi không đổi được nữa thì chuyển sang OLAP
Tiêu chí lựa chọn là
- Dữ liệu có ở dạng chỉ đọc không?
- Dữ liệu có được đọc và ghi không?
- Dữ liệu có thể được phân vùng thành cả chỉ đọc và đọc và ghi không?
Thậm chí nhiều cách hơn để tối ưu hóa các truy vấn MySQL
Chúng tôi đã tạo phần thứ hai của hướng dẫn này với nhiều mẹo và cách hơn nữa để tối ưu hóa cơ sở dữ liệu MySQL của bạn, bạn có thể đọc nó tại đây. Còn nhiều cách tăng tốc độ truy vấn MySQL và giảm tốc độ chạy [phần 2]
Tóm lược
Trong hướng dẫn này, chúng tôi bắt đầu đề cập đến một số khía cạnh về cách tối ưu hóa tốc độ và hiệu suất truy vấn MySQL, trong hướng dẫn tiếp theo, chúng tôi sẽ đề cập đến nhiều chủ đề hơn như Tối ưu hóa bảng, cài đặt bộ nhớ, v.v.