Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Hiệu suất MySQL:Cách tận dụng việc lập chỉ mục cơ sở dữ liệu MySQL

Trong suốt hướng dẫn này, chúng tôi sẽ đề cập đến một số nguyên tắc cơ bản của lập chỉ mục. Là một phần của loạt bài về MySQL, chúng tôi sẽ giới thiệu các khả năng của lập chỉ mục MySQL và vai trò của nó trong việc tối ưu hóa hiệu suất cơ sở dữ liệu. Liquid Web khuyên bạn nên tham khảo ý kiến ​​của DBA trước khi thực hiện bất kỳ thay đổi nào đối với ứng dụng cấp sản xuất của bạn.

Lập chỉ mục là gì?

Lập chỉ mục là một cấu trúc mạnh mẽ trong MySQL có thể được tận dụng để có được thời gian phản hồi nhanh nhất từ ​​các truy vấn phổ biến. Các truy vấn MySQL đạt được hiệu quả bằng cách tạo một bảng nhỏ hơn, được gọi là chỉ mục, từ một cột hoặc tập hợp các cột được chỉ định. Các cột này, được gọi là khóa, có thể được sử dụng để thực thi tính duy nhất. Dưới đây là hình ảnh trực quan đơn giản về chỉ mục mẫu sử dụng hai cột làm khóa.

+------+----------+----------+
| ROW | COLUMN_1 | COLUMN_2 |
+------+----------+----------+
| 1 | data1 | data2 |
+------+----------+----------+
| 2 | data1 | data1 |
+------+----------+----------+
| 3 | data1 | data1 |
+------+----------+----------+
| 4 | data1 | data1 |
+------+----------+----------+
| 5 | data1 | data1 |
+------+----------+----------+

Truy vấn sử dụng các chỉ mục để xác định và truy xuất dữ liệu được nhắm mục tiêu, ngay cả khi chúng là sự kết hợp của các khóa. Nếu không có chỉ mục, việc chạy cùng một truy vấn dẫn đến việc kiểm tra mọi hàng để tìm dữ liệu cần thiết. Lập chỉ mục tạo ra một lối tắt, với thời gian truy vấn nhanh hơn nhiều trên các bảng mở rộng. Phép tương tự trong sách giáo khoa có thể cung cấp một cách phổ biến khác để hình dung cách hoạt động của các chỉ mục.

Khi nào thì kích hoạt tính năng lập chỉ mục?

Việc lập chỉ mục chỉ có lợi cho các bảng lớn với thông tin được truy cập thường xuyên. Ví dụ:để tiếp tục so sánh với sách giáo khoa của chúng tôi, việc lập chỉ mục sách truyện dành cho trẻ em chỉ có một chục trang là rất hợp lý. Sẽ hiệu quả hơn nếu bạn chỉ cần đọc cuốn sách để tìm từng lần xuất hiện của từ “rùa” hơn là thiết lập và duy trì các chỉ mục, truy vấn các chỉ mục đó và sau đó xem xét từng trang được cung cấp. Trong thế giới máy tính, những tác vụ bổ sung xung quanh việc lập chỉ mục thể hiện tài nguyên bị lãng phí sẽ tốt hơn nếu không lập chỉ mục.

Nếu không có chỉ mục, khi các bảng phát triển với tỷ lệ lớn, thời gian phản hồi sẽ bị ảnh hưởng bởi các truy vấn nhắm mục tiêu đến các bảng đó. Các truy vấn không hiệu quả biểu hiện thành độ trễ trong hiệu suất ứng dụng hoặc trang web. Chúng tôi thường xác định độ trễ này bằng cách sử dụng tính năng nhật ký truy vấn chậm MySQL. Bạn có thể tìm thêm thông tin chi tiết về cách sử dụng tính năng nhật ký truy vấn chậm trong bài viết đầu tiên của loạt bài này:Hiệu suất MySQL:Xác định các truy vấn dài.
Khi một bảng khổng lồ đạt đến điểm giới hạn, nó có thể có thời gian chết đối với các ứng dụng và trang web . Tiến hành đánh giá định kỳ đối với cơ sở dữ liệu đang phát triển sẽ thiết lập hiệu suất cơ sở dữ liệu tối ưu và loại bỏ những gián đoạn vốn có của các truy vấn dài.

Ưu điểm lập chỉ mục MySQL so với Nhược điểm

Có những lợi ích và nhược điểm khi sử dụng lập chỉ mục MySQL và chúng tôi sẽ thảo luận về những ưu và nhược điểm đáng kể để bạn cân nhắc. Những khía cạnh này sẽ hướng dẫn bạn quyết định liệu lập chỉ mục có phải là lựa chọn thích hợp cho tình huống của bạn hay không.

Một chỉ mục có thông tin gì?

Chọn những gì để lập chỉ mục có lẽ là phần thách thức nhất để lập chỉ mục cơ sở dữ liệu của bạn. Xác định điều gì là đủ quan trọng để lập chỉ mục và điều gì đủ lành tính để không lập chỉ mục. Nói chung, lập chỉ mục hoạt động tốt nhất trên những cột là chủ đề của mệnh đề WHERE trong các truy vấn thường được thực thi của bạn. Hãy xem xét bảng đơn giản sau:

ID, TITLE, LAST_NAME, FIRST_NAME, MAIDEN_NAME, DOB, GENDER, AGE, DESCRIPTION, HISTORY, ETC...

Nếu các truy vấn của bạn dựa vào việc kiểm tra mệnh đề WHERE bằng LAST_NAME và FIRST_NAME thì việc lập chỉ mục theo hai cột này sẽ làm tăng đáng kể thời gian phản hồi truy vấn. Ngoài ra, nếu các truy vấn của bạn dựa vào tra cứu ID đơn giản, lập chỉ mục theo ID sẽ là lựa chọn tốt hơn.

Những ví dụ này chỉ là một ví dụ thô sơ và có một số kiểu cấu trúc lập chỉ mục được tích hợp sẵn trong MySQL. Trang MySQL sau đây thảo luận chi tiết hơn về các loại chỉ mục này và đề xuất nên đọc cho bất kỳ ai đang cân nhắc lập chỉ mục:Cách MySQL sử dụng chỉ mục

Chỉ mục duy nhất là gì?

Một điểm khác cần xem xét khi đánh giá cột nào sẽ đóng vai trò là khóa trong chỉ mục của bạn là có sử dụng ràng buộc DUY NHẤT hay không. Đặt ràng buộc UNIQUE sẽ thực thi tính duy nhất dựa trên khóa lập chỉ mục đã định cấu hình. Như với bất kỳ khóa nào, đây có thể là một cột đơn hoặc kết hợp của nhiều cột. Chức năng của ràng buộc này đảm bảo rằng không có mục nhập trùng lặp nào trong bảng dựa trên khóa được cấu hình.

Chỉ mục khóa chính là gì?

Thường được gọi là ràng buộc DUY NHẤT, KHÓA CHÍNH được sử dụng để tối ưu hóa các chỉ mục. Ràng buộc này đảm bảo rằng KHÓA CHÍNH đã chỉ định không được có giá trị rỗng. Do đó, hiệu suất tăng lên xảy ra khi chạy trên công cụ lưu trữ InnoDB cho bảng được đề cập. Sự gia tăng này là do cách InnoDB lưu trữ dữ liệu một cách vật lý, đặt các hàng có giá trị rỗng trong khóa ngoài dãy liền kề với các hàng có giá trị. Việc kích hoạt ràng buộc này đảm bảo các hàng của bảng được giữ theo thứ tự liền kề để có phản hồi nhanh hơn.

Quản lý chỉ mục

Bây giờ chúng ta sẽ trình bày một số điều cơ bản về thao tác lập chỉ mục bằng cú pháp MySQL. Trong các ví dụ, chúng tôi sẽ bao gồm việc tạo, xóa và liệt kê các chỉ mục. Hãy nhớ rằng những ví dụ này có các mục nhập giữ chỗ cho các từ khóa cụ thể. Những từ khóa này về bản chất là tự giải thích để dễ đọc và dưới đây là sơ lược về chúng.

Liệt kê / Hiển thị Chỉ mục

Các bảng có thể có nhiều chỉ mục. Việc quản lý các chỉ mục chắc chắn sẽ yêu cầu có thể liệt kê các chỉ mục hiện có trên một bảng. Cú pháp để xem chỉ mục ở bên dưới.

SHOW INDEX FROM tableName;

Tạo chỉ mục

Tạo chỉ mục có một cú pháp đơn giản. Khó khăn là xác định cột nào cần lập chỉ mục và liệu việc thực thi tính duy nhất có cần thiết hay không. Dưới đây, chúng tôi sẽ minh họa cách tạo chỉ mục có và không có khóa CHÍNH và các ràng buộc DUY NHẤT.

Như đã đề cập trước đây, các bảng có thể có nhiều chỉ mục. Nhiều lập chỉ mục rất hữu ích để tạo các chỉ mục phù hợp với các truy vấn mà ứng dụng hoặc trang web của bạn yêu cầu. Cài đặt mặc định cho phép tối đa 16 chỉ mục cho mỗi bảng, hãy tăng con số này lên nhưng nói chung là nhiều hơn mức cần thiết. Chỉ mục có thể được tạo trong quá trình tạo bảng hoặc được thêm vào bảng dưới dạng chỉ mục bổ sung sau này. Chúng ta sẽ xem xét cả hai phương pháp bên dưới.

Ví dụ:Tạo Bảng với Chỉ mục Chuẩn

CREATE TABLE tableName (
ID int,
LName varchar(255),
FName varchar(255),
DOB varchar(255),
LOC varchar(255),
INDEX ( ID )
);

Ví dụ:Tạo Bảng với Chỉ mục Duy nhất &Khóa Chính

CREATE TABLE tableName (
ID int,
LName varchar(255),
FName varchar(255),
DOB varchar(255),
LOC varchar(255),
PRIMARY KEY (ID),
UNIQUE INDEX ( ID )
);

Ví dụ:Thêm chỉ mục vào bảng hiện có

CREATE INDEX indexName ON tableName (ID, LName, FName, LOC);

Ví dụ:Thêm chỉ mục vào bảng hiện có bằng khóa chính

CREATE UNIQUE INDEX indexName ON tableName (ID, LName, FName, LOC);

Xóa chỉ mục

Trong khi quản lý các chỉ mục, bạn có thể thấy cần phải loại bỏ một số. Xóa chỉ mục cũng là một quá trình rất đơn giản, hãy xem ví dụ bên dưới:

DROP INDEX indexName ON tableName;

Có nhiều cách để tối ưu hóa cơ sở dữ liệu của bạn để đạt được hiệu quả thực sự. Nếu bạn muốn tìm hiểu thêm hoặc chuyển đổi các loại công cụ tìm kiếm có sẵn trong MySQL, hãy đọc qua hướng dẫn MyISAM so với InnoDB của chúng tôi. Hoặc nếu bạn cần cơ sở dữ liệu hoạt động cao, hãy xem trang sản phẩm MySQL của chúng tôi để xem các tùy chọn khác nhau.

Điều hướng chuỗi <>

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sao lưu cơ sở dữ liệu logic bằng MySQL Shell

  2. Làm cách nào để biết giao dịch nào đang gây ra trạng thái khóa siêu dữ liệu bảng Đang chờ?

  3. Loại bỏ các hàng trùng lặp trong MySQL

  4. Các lệnh quản trị cơ sở dữ liệu cơ bản của MySQL - Phần I

  5. Hàm MySQL ASIN () - Trả về Arc Sine của một số