Microsoft gần đây đã công bố một tính năng mới đáng kinh ngạc - điều chỉnh tự động trong Cơ sở dữ liệu Azure SQL. Thành thật mà nói, tôi rất ấn tượng với tính năng này vì các kỹ sư của Microsoft đã sử dụng một cách tinh vi trí tuệ nhân tạo trong việc điều chỉnh hiệu suất SQL Azure. Mục đích là theo dõi cơ sở dữ liệu Azure SQL và gửi những quan sát này đến dịch vụ tình báo tích hợp để tạo ra một số khuyến nghị. Chúng có thể được áp dụng vào thời điểm tốt nhất. Tính năng này cũng đã đơn giản hóa công việc của người quản trị cơ sở dữ liệu; họ không phải lo lắng về hiệu suất cơ sở dữ liệu SQL Azure bây giờ.
Có một điểm chính về điều chỉnh tự động SQL Azure trong tài liệu MSDN “Điều chỉnh tự động học theo chiều ngang từ tất cả cơ sở dữ liệu trên Azure thông qua Trí tuệ nhân tạo và nó tự động cải thiện các hành động điều chỉnh”. Nó có nghĩa là thuật toán trí tuệ nhân tạo học hỏi kinh nghiệm rất lớn từ các cơ sở dữ liệu SQL Azure khác nhau. Vì lý do này, những khuyến nghị này sẽ đáng tin cậy. Tính năng điều chỉnh tự động cũng có thể khôi phục các đề xuất và tự sửa lỗi.
Một tùy chọn thú vị khác về tính năng này là thông báo. Microsoft đang tăng cường sự tin tưởng của tính năng này bằng cách nói rằng nó được triển khai ở một số công ty. Có thể, cách làm này có thể hơi không tưởng nhưng trong tương lai trí tuệ nhân tạo sẽ nhận được rất nhiều trọng trách của người quản trị cơ sở dữ liệu. Do đó, số lượng tác vụ dành cho người quản trị cơ sở dữ liệu sẽ được giảm bớt.
Để kiểm tra tính năng này, tôi đã tạo hai bảng trên Azure SQL và điền vào chúng một số dữ liệu. Sau khi tạo dữ liệu thử nghiệm này, tôi đã thực thi nhiều truy vấn cần các chỉ mục không phân cụm giống nhau. Khi tôi kiểm tra kế hoạch thực thi truy vấn ước tính, tôi thấy rằng nó đề xuất một chỉ mục không phân cụm. Khoảng sau 30 giờ, tính năng tự động điều chỉnh Azure SQL đã tạo ra một đề xuất để tạo chỉ mục. Trong thời gian chờ đợi này, Microsoft lưu ý rằng “Cơ sở dữ liệu Azure SQL cần theo dõi các hoạt động ít nhất trong một ngày để xác định một số khuyến nghị”. Chỉ số khuyến nghị điều chỉnh này giống với chỉ số bị thiếu. Khi điều chỉnh tự động cố gắng thực thi tập lệnh, đã xảy ra lỗi do dung lượng ổ đĩa có hạn.
/* Missing Index Details from SQLQuery1.sql - xxxx.database.windows.net.Adventureworks (esat.erkec) The Query Processor estimates that implementing the following index could improve the query cost by 99.6269%. */ /* USE [Adventureworks] GO CREATE NONCLUSTERED INDEX [<Name of Missing Index, sysname,>] ON [dbo].[Salesd] ([SalesOrderID]) GO */
Các tùy chọn điều chỉnh tự động như sau:
- Tạo chỉ mục xác định việc tạo chỉ mục tự động có thể ảnh hưởng đến hiệu suất.
- Chỉ số giảm xác định các chỉ mục không sử dụng hoặc dư thừa.
- Bắt buộc Kế hoạch Cuối cùng Tốt xác định các kế hoạch truy vấn SQL kém hơn các kế hoạch trước đó. Tính năng này đề cập đến việc sửa kế hoạch tự động trong SQL Server 2017.
Cách bật tính năng tự động điều chỉnh Azure SQL
Các truy vấn Azure Portal hoặc T-SQL cho phép bật các tùy chọn điều chỉnh tự động. Tính năng này có thể cho phép điều chỉnh tự động ở cấp độ máy chủ hoặc cơ sở dữ liệu cùng một lúc. Cấp cơ sở dữ liệu có thể kế thừa các tùy chọn này từ cấp máy chủ.
Bây giờ, chúng tôi sẽ kết nối với Cổng Azure và tìm Máy chủ SQL.
Sau đó, tìm các tùy chọn điều chỉnh tự động.
Trên ảnh chụp màn hình này, chúng tôi có thể thay đổi và áp dụng các tùy chọn điều chỉnh tự động ở cấp máy chủ và trong cài đặt mặc định. Tất cả các cơ sở dữ liệu được kế thừa từ cấp độ máy chủ. Tuy nhiên, chúng tôi cũng có thể thay đổi tùy chọn này ở cấp cơ sở dữ liệu.
Tùy chọn Trạng thái Hiện tại xác định trạng thái hiện tại của tùy chọn điều chỉnh tự động. Microsoft đề nghị quản lý tính năng này ở cấp máy chủ vì các cài đặt của nó có thể được áp dụng cho tất cả các cơ sở dữ liệu.
Bây giờ, chúng ta sẽ xem xét các tùy chọn điều chỉnh tự động ở cấp cơ sở dữ liệu. Chúng tôi có thể tìm thấy các tùy chọn này trên cơ sở dữ liệu SQL.
Như bạn thấy, chúng tôi có thể đặt các tùy chọn điều chỉnh tự động cho một cơ sở dữ liệu riêng lẻ và thay đổi các tùy chọn kế thừa.
Ảnh chụp màn hình ở trên xác định các tùy chọn sau:
- Trạng thái của Force Plan là “BẬT” và được kế thừa từ cấp máy chủ có trạng thái là “BẬT”.
- Trạng thái Tạo chỉ mục là “TẮT” và được kế thừa từ cấp máy chủ. Trạng thái của nó là "TẮT".
- Trạng thái Chỉ mục thả là “BẬT” và tùy chọn này chỉ được đặt cho cơ sở dữ liệu này. Cấp máy chủ không quan trọng đối với cài đặt này.
Chúng tôi có thể bật điều chỉnh tự động thông qua T-SQL:
ALTER DATABASE current SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON, CREATE_INDEX = DEFAULT, DROP_INDEX)
Tại bước này, chúng ta sẽ xem xét các đề xuất điều chỉnh tự động nằm bên dưới Menu SQL Server.
Ngoài ra, bạn có thể tìm thấy các đề xuất điều chỉnh tự động bên dưới menu cơ sở dữ liệu.
Các đề xuất điều chỉnh có các trạng thái khác nhau:
- Đang chờ xử lý: Đã nhận được lệnh áp dụng đề xuất và được lên lịch thực hiện.
- Đang thực thi: Đề xuất đang được áp dụng.
- Xác minh: Đề xuất đã được áp dụng thành công và dịch vụ đang đo lường lợi ích.
- Thành công: Đề xuất đã được áp dụng thành công và lợi ích đã được đo lường.
- Lỗi: Đã xảy ra lỗi trong quá trình áp dụng khuyến nghị. Đây có thể là sự cố tạm thời hoặc sự thay đổi giản đồ đối với bảng và tập lệnh không còn hợp lệ.
- Hoàn nguyên: Đề xuất đã được áp dụng nhưng bị coi là không hiệu quả và đang được tự động hoàn nguyên.
- Đã hoàn nguyên: Đề xuất đã được hoàn nguyên.
Khi điều chỉnh tự động tạo một đề xuất sẽ nằm bên dưới tab Đề xuất, trạng thái sẽ đang chờ xử lý. Khi trạng thái đề xuất điều chỉnh đang thực thi, tiến trình, thành công hay lỗi, nó sẽ được hiển thị trong tab Lịch sử điều chỉnh. Đồng thời, sys.dm_db_tuning_recommendations có thể trả về thông tin về đề xuất điều chỉnh tự động.
SELECT name, JSON_VALUE(state, '$.currentValue') as script, JSON_VALUE(details, '$.implementationDetails.script') as script, details.* FROM sys.dm_db_tuning_recommendations CROSS APPLY OPENJSON(details, '$.createIndexDetails') WITH ( indexName VARCHAR(100) '$.indexName', indexType VARCHAR(100) '$.indexType', table_name VARCHAR(100) '$.table') as details
Khi chúng tôi nhấp vào Đề xuất, chúng tôi có thể tìm thấy một số chi tiết về điều chỉnh đề xuất.
Chúng tôi có thể nhận được nhiều thông tin hữu ích về cách điều chỉnh đề xuất và tạo tập lệnh của tính năng này.
Chi tiết mà tập lệnh sẽ trả về như sau:
- Tác động xác định mức độ ưu tiên của đề xuất điều chỉnh.
- Dung lượng ổ đĩa cần thiết xác định mức tiêu thụ dung lượng lưu trữ.
- Loại chỉ mục xác định loại chỉ mục mà nó sẽ tạo.
Kết luận
Theo tôi, điều chỉnh tự động SQL Azure là một tính năng thế hệ mới vì Microsoft đang bắt đầu sử dụng các thuật toán trí tuệ nhân tạo trong việc điều chỉnh khuyến nghị. Đồng thời, tính năng này có thể dẫn đến các câu hỏi sau:
- Khi nào tôi nên có đề xuất điều chỉnh này?
- Đề xuất điều chỉnh này có hữu ích không? Nếu nó không hữu ích, khi nào tôi nên khôi phục đề xuất điều chỉnh này?
Do đó, tính năng tự động điều chỉnh SQL Azure cung cấp một cách tiếp cận tương lai.
Tài liệu tham khảo
Điều chỉnh tự động trong Cơ sở dữ liệu Azure SQL
Điều chỉnh hiệu suất trong Cơ sở dữ liệu Azure SQL
Trí tuệ nhân tạo điều chỉnh Cơ sở dữ liệu SQL Azure