Tại sao việc điều chỉnh hiệu suất SQL lại quan trọng đối với việc quản lý cơ sở dữ liệu?
Bởi vì nó có thể giúp bạn tiết kiệm thời gian tiền bạc lớn. Chịu đựng với tôi và bạn sẽ thấy như thế nào.
Điều chỉnh hiệu suất SQL và quản lý cơ sở dữ liệu - kết nối các dấu chấm
Hầu hết các chuyên gia cơ sở dữ liệu dành thời gian của họ để giữ cho đèn sáng. Họ đầu tư phần lớn công sức vào việc đảm bảo thời gian hoạt động bằng cách theo dõi các tài nguyên như bộ nhớ, bộ nhớ và thông lượng mạng. Đó là một phần quan trọng của quản lý cơ sở dữ liệu, nhưng khi ngày càng nhiều công ty chuyển cơ sở dữ liệu của họ sang các tài nguyên đám mây gần như vô hạn như AWS và Azure, thì các khía cạnh khác trở nên quan trọng hơn.
Điều chỉnh hiệu suất SQL là một trong những khía cạnh đó. Khi đèn được giữ an toàn và bạn tăng thứ bậc nhu cầu trong quản lý cơ sở dữ liệu, điều tiếp theo bạn muốn là hiệu suất tốt hơn và điều đó yêu cầu điều chỉnh.
Những câu hỏi đầu tiên cần hỏi khi điều chỉnh hiệu suất trong SQL
Không sớm thì muộn, nhiều chuyên gia cơ sở dữ liệu thấy mình đứng trước Máy chủ SQL mà họ không xây dựng. Không có nhiều hướng dẫn cách thực hiện cho tình huống đó. Điều chỉnh hiệu suất SQL là một bài tập trong việc đào sâu, tìm ra điểm sai và sau đó lặp đi lặp lại sửa lỗi đó.
Trong các bản sửa lỗi đầu tiên của bạn, bạn thậm chí có thể không chạm vào các câu lệnh SQL. Một số chuyên gia cơ sở dữ liệu bắt đầu ở cấp độ người dùng / phiên. Họ đến nơi người dùng không hài lòng, lắng nghe cách họ phàn nàn và đặt ra câu hỏi.
- Những màn hình hoặc trang nào mất quá nhiều thời gian để hiển thị?
- Ứng dụng có chậm hơn khi họ tạo một vé mới hoặc mở một vé hiện có không?
- Có mất nhiều thời gian để lưu bản ghi không?
- “Một thời gian dài là bao lâu?”
Khi họ có những câu trả lời đó, họ sẽ xem điều gì trong cơ sở dữ liệu đang gây ra điều đó.
Điều đó tốt hơn là ngồi xuống vào ngày đầu tiên và quyết định giải quyết vấn đề như phân mảnh, điều này có thể hoàn toàn không ảnh hưởng đến người dùng. Vấn đề là bắt đầu với những gì người dùng quan tâm.
Cũng hãy nghĩ về mức cá thể / cơ sở dữ liệu. Ví dụ, trong thế giới Microsoft, công việc SQL Server Agent là một nơi tốt để bắt đầu. Chúng là một loạt các hành động thường xác định một nhiệm vụ quản trị mà bạn có thể theo dõi để thành công hay thất bại. Chúng có nghĩa là thuận tiện, nhưng giống như nhiều thứ trong quản lý cơ sở dữ liệu, chúng có xu hướng tích lũy khi mọi người quên mất nguồn gốc của chúng và những gì chúng làm.
Bạn có thể thấy nhiều công việc thực hiện cùng một việc, như chạy các phiên bản khác nhau của tập lệnh chỉ mục hoặc tệ hơn là làm việc với nhau. Kiểm tra các công việc đã được định cấu hình với hai câu hỏi:"Công việc này làm gì?" và quan trọng hơn, “Nếu tôi dừng công việc đó, liệu có điều gì tồi tệ xảy ra không?”
Bạn nên tìm kiếm những yếu tố nào?
Khi bạn đạt đến mức điều chỉnh hiệu suất SQL, nó sẽ nhận các dấu hiệu về hành vi từ một số yếu tố. Như được mô tả trong phần Hỏi các chuyên gia của chúng tôi:Webcast Bàn tròn về Hiệu suất Cơ sở dữ liệu, bạn có thể dành ít thời gian hơn để điều chỉnh chính SQL nếu bạn tìm thấy và diễn giải chính xác các yếu tố như sau:
- Chặn - Nếu máy chủ đang chặn, nó giống như một quả bom hẹn giờ tích tắc. Giả sử một tập lệnh bắt đầu một giao dịch và không đóng nó; điều đó có thể dẫn đến một tệp nhật ký chỉ phát triển và phát triển cho đến khi hết dung lượng. Chặn là một tin xấu đối với hiệu suất, vì vậy hãy tìm kiếm nó ngay lập tức.
- Đại lý - Apropos của các công việc SQL Server Agent, quản trị viên đã được biết đến là vô tình bao bọc các nhiệm vụ làm giảm hiệu suất trong công việc. Họ có thể thực hiện các giao dịch hoặc xây dựng lại các chỉ mục trong một công việc, hoặc thu nhỏ cơ sở dữ liệu trong một giao dịch. Trong trường hợp như vậy, hãy xem xét tắt tạm thời tác nhân để đóng tất cả các công việc liên quan. Đó là một kỹ thuật tích cực, nhưng nếu nó cải thiện hiệu suất, bạn sẽ biết lý do tại sao.
- Số liệu thống kê về thời gian chờ - Hãy tự hỏi bản thân, “Máy chủ đang chờ điều gì ngay bây giờ?” Các chỉ số như tuổi thọ trang và độ dài hàng đợi đĩa có một số câu trả lời, nhưng chúng chỉ cung cấp một cái nhìn hẹp. Số liệu thống kê về thời gian chờ hiển thị cho bạn mọi thứ thông qua lăng kính của các loại chờ và danh mục chờ, cho phép bạn tập trung vào khoảng năm sự kiện chờ tiêu tốn nhiều thời gian nhất. Brent Ozar’s sp_BlitzFirst là một thủ tục được lưu trữ đáng tin cậy để khám phá những gì các truy vấn SQL Server của bạn đang chờ đợi ngay bây giờ. Sau đó, khi bạn muốn nghiên cứu các mẫu dài hạn về số liệu thống kê chờ cho máy chủ của mình, hãy tìm đến một công cụ giám sát hiệu suất.
- Hoạt động của quản trị viên - Đây còn được gọi là "lỗi thí điểm", bởi vì một số vấn đề về hiệu suất phát sinh từ những gì bạn đang làm. Giả sử bạn đang chạy đồng thời cả SQL Server Activity Monitor và SQL Server Profiler, cố gắng tìm hiểu Query Store. Bạn không thể vượt xa hiệu ứng người quan sát; khi bạn theo dõi mọi thứ như vậy, bạn chỉ đang yêu cầu cơ sở dữ liệu chạy chậm lại.
- Chỉ mục - Đối với những thứ được cho là có lợi, các chỉ số chắc chắn có thể khiến bạn bị đau cổ. Trên thực tế, họ xứng đáng nhận được nhiều hơn một viên đạn. Đọc tiếp.
Điều chỉnh hiệu suất SQL có nghĩa là xem xét kỹ các chỉ mục
Phần lớn, điều chỉnh hiệu suất SQL kết hợp với điều chỉnh chỉ mục. May mắn thay, nếu bạn thành thạo về quản lý cơ sở dữ liệu tại chỗ, các kỹ năng của bạn có thể dễ dàng chuyển sang quản lý cơ sở dữ liệu trên đám mây.
Điều chỉnh chỉ mục ngày càng trở nên quan trọng vì sự đa dạng ngày càng tăng của các chỉ mục:nhóm, không nhóm, duy nhất, lọc, cột, băm, không phân nhóm được tối ưu hóa bộ nhớ, XML, không gian và toàn văn bản, để kể tên một số. Nhưng có một điều không bao giờ thay đổi là cột đầu tiên của chỉ mục, cột này thúc đẩy các quyết định về chỉ mục được thực hiện bởi công cụ cơ sở dữ liệu.
Nhiều nhà cung cấp bán và triển khai các ứng dụng với nhiều chỉ mục có mục đích tốt nhưng cuối cùng lại không bao giờ được sử dụng hoặc tệ hơn là thực sự cản trở hiệu suất. Nếu bạn kiểm tra các tập lệnh chỉ mục không sử dụng hoặc tập lệnh tiêu thụ chỉ mục trong một số sản phẩm phần mềm, bạn sẽ tìm thấy rất nhiều chỉ mục trên khóa ngoại. Ví dụ:nếu sản phẩm sử dụng 20 khóa ngoại, thì nhà cung cấp có thể gửi tới 20 chỉ mục, cộng với 10 chỉ mục cột đơn, cộng với 10 chỉ mục khác trên một chỉ mục được nhóm duy nhất, v.v.
Bất cứ khi nào bạn có tùy chọn, cách tốt hơn để tiếp cận kiến trúc cơ sở dữ liệu là bắt đầu với một chỉ mục được phân nhóm mà bạn nghĩ sẽ đại diện tốt nhất cho bảng. Sau đó, để hệ thống tự chạy trong một thời gian. Nếu và khi bạn cần thêm chỉ mục, hãy tạo chúng. Thêm chỉ mục là một bài tập trong việc đánh đổi hiệu suất tốt hơn ở đây với các vấn đề như lấp đầy dung lượng ổ đĩa và khóa ở đó. Thật khó để biết mỗi chỉ mục bổ sung ảnh hưởng như thế nào đến toàn bộ hệ thống.
Đối với vấn đề đó, hãy xem xét loại bỏ các chỉ số - cách một người bị dị ứng sẽ loại bỏ các nhóm thực phẩm - để xem hiệu suất thay đổi như thế nào. Cố gắng bỏ mọi chỉ mục trên phiên bản nhà phát triển của bạn và xem chỉ mục nào ảnh hưởng đến năm truy vấn hàng đầu của bạn.
Điều chỉnh hiệu suất trong SQL Server - các công cụ đi kèm với nó
Lưu ý rằng bạn không đơn độc trong nỗ lực này. SQL Server bao gồm các tính năng được thiết kế để cải thiện hiệu suất.
Hướng dẫn kế hoạch cho phép bạn thay đổi cách SQL Server chạy một truy vấn nhất định và mặc dù nó không phải là điều chỉnh hiệu suất SQL thuần túy, nhưng nó vẫn ảnh hưởng đến hiệu suất. Nhiều ứng dụng chứa các truy vấn SQL được viết bởi một nhà cung cấp bên ngoài và ngay cả khi những truy vấn đó gây ra hiệu suất kém, một số chuyên gia cơ sở dữ liệu có thể hiểu là miễn cưỡng thay đổi chúng. Với hướng dẫn kế hoạch, bạn có thể đính kèm gợi ý truy vấn hoặc một kế hoạch cố định vào truy vấn và ảnh hưởng đến cách nó chạy.
Tuy nhiên, nhược điểm của hướng dẫn kế hoạch là mặc dù chúng không thay đổi theo thời gian, nhưng môi trường xung quanh chúng thì có. Giống như một lộ trình đã in, chúng có thể hoạt động tốt trong thời gian ngắn và trở nên lỗi thời trước mắt, vì vậy nếu bạn định dựa vào chúng, tốt hơn bạn nên thỉnh thoảng xem lại chúng.
Liên quan đến hướng dẫn kế hoạch là Query Store, một tính năng của SQL Server giúp bạn xác định và điều chỉnh các truy vấn tiêu thụ nhiều tài nguyên nhất trong hệ thống của bạn. Cửa hàng truy vấn không được bật theo mặc định cho cơ sở dữ liệu SQL Server và Azure Synapse Analytics (SQL DW) mới. Nhưng nó được bật theo mặc định trong Cơ sở dữ liệu Azure SQL mới.
Nói chung, không khó để kích hoạt Query Store, nhưng không phải mọi SQL Server đều cần nó ngay từ đầu. Một số quản trị viên không biết về Cửa hàng truy vấn và một số người biết về nó nhưng chưa dành thời gian để khám phá đầy đủ về nó; tốt hơn hết họ nên để nó bị vô hiệu hóa. Sau đó, khi họ hiểu cách hoạt động của Cửa hàng truy vấn, họ có thể sử dụng nó để tìm sự khác biệt về hiệu suất do các thay đổi kế hoạch truy vấn gây ra.
Cuối cùng, Cố vấn Điều chỉnh Công cụ Cơ sở dữ liệu phân tích khối lượng công việc và đề xuất các chỉ mục hoặc chiến lược phân vùng để cải thiện hiệu suất truy vấn. Chạy Tuning Advisor trên cơ sở dữ liệu của bạn là một ý tưởng hay; chỉ cần đừng chạy nó quá sớm. Đảm bảo rằng cơ sở dữ liệu của bạn chứa đủ dữ liệu để các đề xuất chỉ mục có hiệu lực. Khi lần đầu tiên xây dựng ứng dụng của mình, bạn có thể chỉ có một nghìn hàng trong mỗi bảng. Các đề xuất của Cố vấn điều chỉnh sẽ hữu ích hơn khi cơ sở dữ liệu đã phát triển.
Cho tôi xem tiền
Như tôi đã đề cập ở phần đầu, điều chỉnh hiệu suất SQL rất quan trọng đối với việc quản lý cơ sở dữ liệu vì nó có thể giúp bạn tiết kiệm tiền. Làm thế nào?
Đặc biệt là trong đám mây, nơi mà việc mở rộng quy mô bằng thẻ tín dụng phổ biến, các nhóm CNTT đang tìm hiểu xem thực sự có thể tốn kém như thế nào về dung lượng lưu trữ hàng tháng. Hơn nữa, họ bắt đầu hiểu rằng việc chạy các truy vấn được viết kém và để AWS và Azure quản lý chỉ mục của họ sẽ làm tăng chi phí điện toán đám mây của họ. Các truy vấn chậm và chỉ mục không hợp lệ khiến bạn mất tiền.
Điều chỉnh hiệu suất SQL là làm cho tất cả những điều đó đúng. Bằng cách đó, cho dù bạn ở trong thế giới OpEx tại chỗ hay chuyển sang thế giới đám mây của CapEx, bạn vẫn duy trì quyền kiểm soát chi tiêu của mình.