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

Đánh giá sách:Benjamin Nevarez:Điều chỉnh &Tối ưu hóa Truy vấn

Bản sao Microsoft SQL Server 2014 Query Tuning &Optimization (cũng có sẵn trên Kindle), của Benjamin Nevarez, đã đến vào tuần trước. Tôi không thể đến được nó ngay lập tức, nhưng cuối tuần qua, cuối cùng tôi đã có thể đi qua nó giữa những lần thay tã và một chuyến đi đến sở thú.

TL; DR:Đáng giá tiền

Benjamin trình bày một lời giải thích cặn kẽ về toàn bộ quy trình tối ưu hóa truy vấn và rất nhiều thông tin cơ bản mà bạn sẽ cần để hiểu rõ về tất cả. Anh ấy xử lý các chỉ mục, số liệu thống kê và lập kế hoạch lưu vào bộ nhớ đệm, cũng như cách giải quyết các vấn đề phổ biến như đánh hơi tham số. Anh ấy giải thích các tùy chọn phổ biến như Tối ưu hóa cho khối lượng công việc Ad Hoc và Tham số bắt buộc và cách chúng thay đổi cách các kế hoạch được lưu vào bộ nhớ cache và sử dụng lại. Ông cũng thảo luận về nhiều tính năng không có tài liệu và cờ theo dõi có thể giúp bạn hiểu rõ hơn (hoặc ép buộc) cách tiếp cận của SQL Server đối với truy vấn của bạn và cách sử dụng các lệnh Trace, Sự kiện mở rộng và DBCC để xem xét các quyết định mà trình tối ưu hóa đã đưa ra và tác động của chúng ' đã có.

Ngoài ra còn có một phần nội dung tốt dành riêng cho nhiều tính năng mới của SQL Server 2014, bao gồm OLTP trong bộ nhớ ("Hekaton"), chỉ mục cột lưu trữ được phân cụm, thống kê gia tăng và công cụ ước tính cardinality mới. Khi cuốn sách đang được viết, cơ sở dữ liệu mẫu AdventureWorks dành cho SQL Server 2014 vẫn chưa được xuất bản, nhưng chúng đã có sẵn ngay bây giờ.

Cuốn sách kết thúc với một chương phức tạp nhưng nhiều thông tin về các hạn chế của trình tối ưu hóa truy vấn dẫn đến các kế hoạch dưới mức tối ưu và cách sử dụng các gợi ý và hướng dẫn lập kế hoạch để giải quyết các vấn đề đó.

Một số hạn chế

Mặc dù tham chiếu tổng thể khá đầy đủ về điều chỉnh truy vấn, nhưng có một số điều tôi nghĩ có thể tốt hơn:

  • Benjamin nói về việc thu thập thông tin ShowPlan từ Theo dõi và Sự kiện mở rộng, đồng thời chỉ ra một cách chính xác rằng Hồ sơ không phải là cách bạn muốn chạy theo dõi, vì chi phí hiệu suất khủng khiếp và được ghi chép đầy đủ. Đây là một điều tốt, vì dấu vết không được dùng nữa và Hồ sơ là thứ mà mọi người thường mặc định sử dụng. Có một cảnh báo nhỏ về chi phí của query_post_execution_showplan mà tôi nghĩ có thể được nhấn mạnh hơn một chút, với lời nhắc rằng điều này chỉ nên được sử dụng để điều chỉnh và khắc phục sự cố được nhắm mục tiêu. Việc thu thập thông tin này cho mọi truy vấn trong khối lượng công việc của bạn có thể gây hại nhiều hơn lợi.
  • Anh ấy thảo luận về các chỉ mục và thống kê đã lọc, nhưng chỉ ra thực tế là chúng có vấn đề khi cập nhật tự động, vì không có thuật toán đặc biệt nào được sử dụng mặc dù chỉ mục chỉ đại diện cho một tập hợp con của bảng. Microsoft đã xác nhận rằng đây là một vấn đề, nhưng tại thời điểm này, họ không có kế hoạch khắc phục nó. Để biết thêm thông tin, hãy xem Kết nối # 509638 và Kết nối # 333532. Ngoài ra, hãy xem bài đăng trên blog này để biết nhiều giới hạn chỉ mục được lọc khác cần xem xét.
  • Mặc dù phạm vi của các tính năng của năm 2014 là khá toàn diện, nhưng tôi rất ngạc nhiên khi không tìm thấy bất kỳ đề cập nào về sys.dm_exec_query_profiles , một DMV mới để theo dõi tiến trình truy vấn trong thời gian thực - tất cả chỉ dành cho người điều hành riêng lẻ. Tuy nhiên, đây không phải là thông tin cần thiết cho tất cả mọi người vì nó không phải là trường hợp sử dụng cực kỳ rộng rãi (IMHO nó chỉ thực sự hữu ích cho các truy vấn đặc biệt dài).
  • Đây là một lựa chọn tổng thể, nhưng nó là một lựa chọn phổ biến trong các tiêu đề kỹ thuật:chỉ số hơi không chính xác. Ví dụ:tham chiếu đến SQL Sentry Plan Explorer trỏ đến trang 13, nhưng nội dung có liên quan thực sự nằm trên trang 14. Như tôi đã nói, rất nhỏ nhặt, nó chỉ nổi bật với tôi vì đó là điều đầu tiên tôi nhìn. lên trong chỉ mục. :-)

Tôi sẽ không xem xét những lời phàn nàn này. Không có cuốn sách nào có thể chứa mọi chi tiết cuối cùng về mọi thứ. Vì vậy, hãy coi chúng là addenda. :-)

Tóm tắt

Điều này đã nhanh chóng trở thành một tài liệu tham khảo thuận tiện cho tôi; những chiếc tai chó đã thay thế một số dấu trang của tôi thành các bài đăng trên blog có đề cập đến một số chi tiết khó hiểu hoặc cờ theo dõi, và trong nhiều trường hợp, Benjamin đã mô tả nó chi tiết hơn và / hoặc đóng khung nó với ngữ cảnh tốt hơn. Giữa cuốn sách này và một vài đầu sách được tham khảo bên dưới, tôi nghĩ rằng bất kỳ ai quen thuộc với T-SQL đều có thể bắt kịp tốc độ khá nhanh, ngay cả khi không có kiến ​​thức về trình tối ưu hóa trước khi đi sâu vào.

Vật liệu bổ sung

Những cuốn sách khác mà tôi muốn giới thiệu để bổ sung cho tiêu đề này:

  • Grant Fritchey's SQL Server Query Điều chỉnh Hiệu suất Truy vấn
  • Lập chỉ mục hiệu suất chuyên gia của Jason Strate cho SQL Server 2012
  • Cấp cho Fritchey kế hoạch thực thi SQL Server

Và tất nhiên, có một nguồn cung cấp vô tận các bài đăng trên blog và các bài viết khác để giúp bạn hiểu về cách điều chỉnh và tối ưu hóa. Tôi hơi thích tài liệu của Paul White - chúng sâu đến mức người phàm muốn đi, nhưng bạn cũng có thể hiểu được chúng bằng cách chỉ lướt qua. Grant và Gail Shaw cũng có một số nội dung có giá trị về các truy vấn và kế hoạch thực thi, còn Kimberly Tripp và Erin Stellato là những tài nguyên tuyệt vời cho mọi thứ liên quan đến chỉ mục hoặc liên quan đến thống kê.

  • Paul White:SQLPerformance.com | sql.kiwi
  • Grant Fritchey (và các tài nguyên)
  • Gail Shaw
  • Kimberly Tripp
  • Erin Stellato

Bạn có thể thấy một số trùng lặp, nhưng tôi rất tin tưởng vào việc sử dụng thông tin từ nhiều nguồn. Đôi khi họ đang trình bày cùng một thông tin, nhưng bóng đèn nhấp nháy dựa trên cách một người nói hoặc ngữ cảnh họ đưa ra. Tôi cũng có thể đã bỏ lỡ khoảng 50 người khác với tài liệu tuyệt vời.

Ồ, và tôi đã đề cập đến công cụ miễn phí của chúng tôi, Plan Explorer, cũng có thể trợ giúp việc này? Bộ tài liệu trình diễn cập nhật của tôi sẽ giới thiệu một loạt các ví dụ.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hạn chế một máy chủ được liên kết với một đăng nhập cục bộ duy nhất (Ví dụ T-SQL)

  2. NULL Complexities - Phần 2

  3. Lập mô hình cơ sở dữ liệu để ghi lại doanh số bán hàng. Phần 1

  4. Tạo mặt nạ dữ liệu động dựa trên proxy trong FieldShield

  5. Xây dựng Mô hình Dữ liệu cho Hệ thống Quản lý Bãi đỗ xe