Bạn có đang cân nhắc nâng cấp lên một phiên bản hiện đại hơn của SQL Server? Bạn đang lựa chọn giữa SQL Server 2016 hoặc SQL Server 2017? Nếu vậy, thì lời khuyên của tôi là nâng cấp lên SQL Server 2017 như tôi giải thích trong bài đăng này.
Việc phát hành công nghệ SQL Server cung cấp nhiều tính năng mới thú vị cho các quản trị viên và nhà phát triển SQL để suy ngẫm. Community Technology Preview (CTP) 2.0 cho SQL Server vNext (thường được gọi là SQL Server 2017) không phải là ngoại lệ. Nhiều cập nhật đã được triển khai trong các tính năng và dịch vụ hiện có của ứng dụng. Trong bài đăng blog này, tôi thảo luận về những gì mới trong database engine của SQL Server 2017 từ góc độ quản trị viên cơ sở dữ liệu (DBA).
Giới thiệu
Microsoft® SQL Server 2017 hiện đã xuất hiện với nhiều tính năng mới cung cấp xử lý nhanh hơn, sự linh hoạt sử dụng nhiều hơn và tiết kiệm chi phí lớn hơn kết quả. SQL Server 2016 đã cung cấp nhiều cải tiến, mà Microsoft gọi là một bước nhảy vọt lớn. Tuy nhiên, nếu SQL Server 2016 là một bước nhảy vọt lớn, thì SQL Server 2017 hứa hẹn tất cả những đó và nhiều hơn nữa những gì khách hàng doanh nghiệp cần ở mọi cấp độ. Hiệu suất cơ sở dữ liệu đã đạt đến đỉnh cao mới với xử lý truy vấn thích ứng (adaptive query processing), khả năng linh hoạt mới với khả năng cross-platform, tích hợp mới cho phân tích thống kê và khoa học dữ liệu, và các phiên bản SQL Server trên Linux®, hệ điều hành Ubuntu® hoặc Docker®. Phiên bản mới thêm công nghệ vững chắc với tiết kiệm chi phí.
Các thay đổi được giới thiệu trong SQL Server 2017 được thảo luận ở đây bao gồm các tính năng sau:
- SQL Server trên Linux
- Tái xây dựng chỉ mục online có thể tiếp tục (Resumable online index rebuild)
- Dịch vụ Machine Learning của SQL Server
- Cải tiến xử lý truy vấn
- Tự động điều chỉnh cơ sở dữ liệu
- Cải tiến kích thước file TempDB
- Sao lưu phân biệt thông minh (Smart differential backup)
- Sao lưu nhật ký giao dịch thông minh (Smart transaction log backup)
- Câu lệnh SELECT INTO cải tiến
- Hỗ trợ giao dịch phân tán
- Chức năng nhóm sẵn sàng mới
- Dynamic management views mới
- Cải tiến In-memory
- Cải tiến bảo mật
- Sẵn sàng cao và khôi phục thảm họa
- Cải tiến hiệu suất
SQL Server trên Linux
SQL Server không còn chỉ là một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) dựa trên Windows. Bạn có thể chạy nó trên các hương vị khác nhau của hệ điều hành Linux. Bạn cũng có thể phát triển ứng dụng với SQL Server trên Linux, Windows, hệ điều hành Ubuntu hoặc Docker và triển khai chúng trên các nền tảng này.
Tái xây dựng chỉ mục online có thể tiếp tục
Tính năng này tiếp tục hoạt động tái xây dựng chỉ mục online từ nơi nó dừng lại sau các sự kiện như failover cơ sở dữ liệu, hết không gian đĩa hoặc tạm dừng.
Các hình ảnh sau hiển thị ví dụ của hoạt động này:
Hướng dẫn cho lập chỉ mục
Khi bạn thực hiện các hoạt động chỉ mục online, các hướng dẫn sau áp dụng:
- Chỉ mục cụm (Clustered indexes) phải được tạo, tái xây dựng hoặc xóa offline khi bảng cơ sở chứa các kiểu dữ liệu large object (LOB) image, ntext và text.
- Chỉ mục không duy nhất và không cụm (Non-unique and non-clustered indexes) có thể được tạo online khi bảng chứa các kiểu dữ liệu LOB nhưng không có cột nào trong số này được sử dụng trong định nghĩa chỉ mục làm khóa hoặc cột không khóa (included).
- Chỉ mục trên bảng tạm cục bộ không thể được tạo, tái xây dựng hoặc xóa online. Hạn chế này không áp dụng cho chỉ mục trên bảng tạm toàn cục.
- Bạn có thể thực hiện các hoạt động DDL chỉ mục online đồng thời trên cùng một bảng hoặc view chỉ khi bạn đang tạo nhiều chỉ mục không cụm mới, hoặc tổ chức lại chỉ mục không cụm. Tất cả các hoạt động chỉ mục online khác được thực hiện cùng lúc sẽ thất bại. Ví dụ, bạn không thể tạo chỉ mục mới online trong khi tái xây dựng chỉ mục hiện có online trên cùng một bảng.
Dịch vụ Machine Learning của SQL Server
SQL Server 2016 đã tích hợp ngôn ngữ lập trình R, có thể chạy trong máy chủ cơ sở dữ liệu và có thể được nhúng vào script Transact-SQL (T-SQL). Trong SQL Server 2017, bạn có thể thực thi script Python trong chính máy chủ cơ sở dữ liệu. Cả R và Python đều là các ngôn ngữ lập trình phổ biến cung cấp hỗ trợ rộng rãi cho phân tích dữ liệu cùng với khả năng xử lý ngôn ngữ tự nhiên.
Cải tiến xử lý truy vấn
SQL Server 2017 điều chỉnh chiến lược tối ưu hóa cho điều kiện runtime của tải công việc ứng dụng của bạn. Nó bao gồm các tính năng xử lý truy vấn thích ứng mà bạn có thể sử dụng để cải thiện hiệu suất truy vấn trong SQL Server và SQL Database.
Có ba cải tiến truy vấn mới như được hiển thị trong sơ đồ sau:
- Phản hồi cấp phép bộ nhớ chế độ batch (Batch mode memory grant feedback): Kỹ thuật phản hồi này tính toán lại bộ nhớ cần thiết cho kế hoạch thực thi và cấp nó từ cache.
- Kết hợp thích ứng chế độ batch (Batch mode adaptive joins): Để thực thi kế hoạch nhanh hơn, kỹ thuật này có thể sử dụng hash join hoặc nested loop join. Sau khi quét đầu vào đầu tiên của kế hoạch thực thi, nó quyết định sử dụng loại join nào để tạo ra đầu ra với tốc độ nhanh nhất.
- Thực thi xen kẽ (Interleaved execution): Thực thi xen kẽ tạm dừng tối ưu hóa kế hoạch thực thi khi nó gặp các hàm table-valued đa câu lệnh. Sau đó, nó tính toán cardinality hoàn hảo và tiếp tục tối ưu hóa.
Tự động điều chỉnh cơ sở dữ liệu
Tính năng này thông báo cho bạn bất cứ khi nào phát hiện vấn đề hiệu suất tiềm năng và cho phép bạn áp dụng các hành động khắc phục, hoặc nó cho phép động cơ cơ sở dữ liệu tự động khắc phục các vấn đề hiệu suất do sự lùi hồi của lựa chọn kế hoạch SQL. Do đó, cơ sở dữ liệu có thể thích ứng động với tải công việc của bạn bằng cách tìm thấy những chỉ mục và kế hoạch nào có thể cải thiện hiệu suất tải công việc của bạn và những chỉ mục nào ảnh hưởng đến tải công việc của bạn. Dựa trên các phát hiện này, quy trình tự động điều chỉnh áp dụng các hành động cải thiện hiệu suất tải công việc. Ngoài ra, cơ sở dữ liệu liên tục giám sát hiệu suất sau bất kỳ thay đổi nào do tự động điều chỉnh thực hiện để đảm bảo rằng nó cải thiện hiệu suất tải công việc. Bất kỳ hành động nào không cải thiện hiệu suất sẽ tự động được hoàn tác.
Lùi hồi lựa chọn kế hoạch SQL
Động cơ cơ sở dữ liệu SQL Server có thể sử dụng các kế hoạch SQL khác nhau để thực thi các truy vấn T-SQL. Kế hoạch truy vấn phụ thuộc vào thống kê, chỉ mục và các yếu tố khác. Trong một số trường hợp, kế hoạch mới có thể không tốt hơn kế hoạch trước đó, và kế hoạch mới có thể gây ra lùi hồi hiệu suất. Bất cứ khi nào bạn nhận thấy lùi hồi lựa chọn kế hoạch kém, bạn nên tìm một kế hoạch tốt đã được sử dụng trước đó và buộc nó được sử dụng thay vì kế hoạch hiện tại bằng cách sử dụng thủ tục sp_query_store_force_plan. Động cơ cơ sở dữ liệu trong SQL Server 2017 (v. 14.x) cung cấp thông tin về các kế hoạch lùi hồi và hành động khắc phục được khuyến nghị. Ngoài ra, động cơ cơ sở dữ liệu cho phép bạn tự động hóa hoàn toàn quy trình này và để động cơ cơ sở dữ liệu khắc phục bất kỳ vấn đề nào liên quan đến các thay đổi kế hoạch được tìm thấy.
Tự động sửa kế hoạch
Tự động sửa kế hoạch được hiển thị trong sơ đồ sau:
Các tính năng tự động điều chỉnh sau có sẵn:
- Tự động sửa kế hoạch (Automatic plan correction) (có sẵn trong SQL Server 2017 v14.x và Azure SQL Database): Nó xác định các kế hoạch thực thi truy vấn có vấn đề và khắc phục các vấn đề hiệu suất kế hoạch SQL. Tự động điều chỉnh được bật bằng lệnh sau:
- Quản lý chỉ mục tự động (Automatic index management) (chỉ có sẵn trong Azure SQL Database): Nó xác định các chỉ mục nên được thêm vào cơ sở dữ liệu của bạn và các chỉ mục nên được xóa.
Cải tiến kích thước file TempDB
Thiết lập SQL Server 2017 bây giờ cho phép bạn chỉ định kích thước file TempDB ban đầu lên tới 256 GB (262,144 MB) mỗi file, với cảnh báo nếu kích thước file được đặt lớn hơn 1GB mà không bật khởi tạo file tức thì (instant file initialization - IFI). Quan trọng là phải hiểu rằng, tùy thuộc vào kích thước ban đầu của file dữ liệu TempDB được chỉ định, việc không bật IFI có thể khiến thời gian thiết lập tăng theo cấp số mũ.
Sao lưu phân biệt thông minh
Một cột mới modified_extent_page_count được giới thiệu trong sys.dm_db_file_space_usage để theo dõi các thay đổi phân biệt trong mỗi file cơ sở dữ liệu trong cơ sở dữ liệu. Cột mới modified_extent_page_count cho phép DBA, cộng đồng SQL và các nhà cung cấp phần mềm độc lập (ISV) sao lưu xây dựng các giải pháp sao lưu thông minh, thực hiện sao lưu phân biệt nếu phần trăm các trang thay đổi trong cơ sở dữ liệu dưới ngưỡng (khoảng 70-80%). Nếu không, chúng thực hiện sao lưu đầy đủ cơ sở dữ liệu. Với số lượng lớn thay đổi trong cơ sở dữ liệu, chi phí và thời gian hoàn thành sao lưu phân biệt tương tự như thực hiện sao lưu đầy đủ cơ sở dữ liệu, vì vậy không có lợi ích thực sự của việc sao lưu phân biệt trong trường hợp này. Tuy nhiên, nó chắc chắn có thể tăng thời gian khôi phục cơ sở dữ liệu. Bằng cách thêm trí tuệ này vào các giải pháp sao lưu, bạn bây giờ có thể tiết kiệm thời gian khôi phục và phục hồi bằng cách sử dụng sao lưu phân biệt.
Sao lưu nhật ký giao dịch thông minh
Một Dynamic Management Function (DMF) mới, sys.dm_db_log_stats (database_id), đã được phát hành. Chức năng này 드러나 một cột mới, log_since_last_log_backup_mb, trao quyền cho DBA, cộng đồng SQL và ISV sao lưu để xây dựng các giải pháp sao lưu T-log thông minh để thực hiện sao lưu dựa trên hoạt động giao dịch trên cơ sở dữ liệu. Trí tuệ giải pháp sao lưu T-log này đảm bảo rằng, nếu tần suất sao lưu T-log quá thấp, kích thước nhật ký giao dịch không tăng do bùng nổ hoạt động giao dịch cao trong thời gian ngắn. Nó cũng giúp tránh tình huống nơi sao lưu nhật ký giao dịch theo lịch trình tạo quá nhiều file sao lưu T-log ngay cả khi không có hoạt động giao dịch trên máy chủ. Nếu điều đó xảy ra, nó sẽ thêm không cần thiết vào chi phí lưu trữ, quản lý file và chi phí khôi phục.
Câu lệnh SELECT INTO cải tiến
Trong SQL Server 2017, bạn có thể cung cấp tên filegroup để tạo bảng mới bằng cách sử dụng từ khóa ON với câu lệnh SELECT INTO. Bảng được tạo trên filegroup mặc định của người dùng theo mặc định. Chức năng này không có sẵn trong các phiên bản trước.
Hỗ trợ giao dịch phân tán
SQL Server 2017 hỗ trợ giao dịch phân tán cho các cơ sở dữ liệu trong các nhóm sẵn sàng. Hỗ trợ này bao gồm các cơ sở dữ liệu trên cùng một thể hiện của SQL Server và các cơ sở dữ liệu trên các thể hiện khác nhau của SQL Server. Giao dịch phân tán không được hỗ trợ cho các cơ sở dữ liệu được cấu hình cho database mirroring.
Chức năng nhóm sẵn sàng mới
Chức năng này bao gồm hỗ trợ không cụm (clusterless), cài đặt Minimum Replica Commit Availability Groups và di chuyển và kiểm tra cross-OS Windows-Linux.
Chức năng này bao gồm các tính năng sau:
Các nhóm sẵn sàng bây giờ có thể được thiết lập mà không cần cụm cơ bản (Windows Server Failover Cluster hoặc WSFC) và qua các môi trường hỗn hợp (thể hiện trên Windows và Linux hoặc Docker).
Cài đặt Minimum Replica Commit mới cho phép bạn chỉ định một số lượng bản sao thứ cấp nhất định. Bạn phải cam kết một giao dịch trước khi cam kết trên bản sao chính.
Dynamic Management Views mới
Các dynamic management views (DMVs) bao gồm các yếu tố sau:
- sys.dm_db_log_stats 드러나 các thuộc tính cấp tóm tắt và thông tin về file nhật ký giao dịch và hữu ích cho việc giám sát sức khỏe nhật ký giao dịch.
- sys.dm_tran_version_store_space_usage cho phép bạn thấy tác động lên việc sử dụng version store, được nhóm theo từng cơ sở dữ liệu. Kết quả là, bạn có thể sử dụng điều này để lập hồ sơ tải công việc của bạn trong môi trường test (trước và sau thay đổi) và giám sát tác động theo thời gian– ngay cả khi các cơ sở dữ liệu khác cũng đang sử dụng version store.
- sys.dm_db_log_info 드러나 thông tin virtual log file (VLF) để giám sát, cảnh báo và phòng ngừa các vấn đề nhật ký giao dịch tiềm năng.
- sys.dm_d_stats_histogram là dynamic management view mới để kiểm tra thống kê, như được hiển thị trong hình ảnh sau:
- sys.dm_os_host_info 드러나 các thứ như nền tảng, bản phân phối, cấp service pack và ngôn ngữ.
- sys.dm_os_sys_info được mở rộng, tiết lộ thông tin CPU (như số socket, số core và core trên mỗi socket).
Cải tiến In-memory
Các thay đổi in-memory trong SQL Server 2017 bao gồm các cải tiến sau:
- Cột tính toán (Computed column) và chỉ mục trên các cột đó hiện được hỗ trợ.
- Biểu thức CASE, CROSS APPLY và TOP (N) WITH TIES hiện được hỗ trợ trong các module natively-compiled.
- Lệnh JSON hiện được hỗ trợ đầy đủ trong cả check constraints và module natively-compiled.
- Thủ tục hệ thống sp_spaceused bây giờ báo cáo đúng không gian cho các bảng memory-optimized.
- Thủ tục hệ thống sp_rename bây giờ hoạt động trên các bảng in-memory và module natively-compiled.
- Hạn chế tám chỉ mục trên các bảng memory-optimized đã bị loại bỏ.
- File filegroup memory-optimized bây giờ có thể được lưu trữ trên Azure storage.
Cải tiến bảo mật
Bây giờ bạn có thể cấp, từ chối hoặc thu hồi quyền trên các credentials (thông tin xác thực) phạm vi cơ sở dữ liệu như CONTROL, ALTER, REFERENCES, TAKE OWNERSHIP và VIEW DEFINITION permissions. Ngoài ra, ADMINISTER DATABASE BULK OPERATIONS hiện hiển thị trong sys.fn_builtin_permissions.
Sẵn sàng cao và khôi phục thảm họa
Đạt được uptime quan trọng, failover nhanh, thiết lập dễ dàng và cân bằng tải các bản sao thứ cấp có thể đọc với chức năng Always On được cải tiến trong SQL Server 2017. Đây là giải pháp thống nhất cho sẵn sàng cao và khôi phục thảm họa trên Linux và Windows. Bạn cũng có thể đặt một bản sao bất đồng bộ trong máy ảo Azure cho sẵn sàng cao lai (hybrid high availability).
Cải tiến hiệu suất
SQL Server 2017 giới thiệu các thay đổi sau đối với cách truy vấn và thống kê được thu thập và hiển thị:
- Một DMV mới sys.dm_exec_query_statistics_xml cho phép bạn tương quan các phiên với kế hoạch, miễn là truy vấn profiling được bật. Hình ảnh sau minh họa điều này:
- Showplan XML bây giờ bao gồm thông tin về thống kê được sử dụng cho một kế hoạch và, cho các kế hoạch thực tế, các chỉ số runtime và 10 thống kê chờ hàng đầu được trải nghiệm bởi kế hoạch đó. Các thống kê chờ này hiện cũng được theo dõi trong query store.
- Một dynamic management function mới sys.dm_db_stats_histogram cho phép bạn truy cập thông tin histogram theo chương trình, mà không cần các lệnh databases console commands (DBCC).
Kết luận
Có nhiều thay đổi trong SQL Server 2017 có thể giúp việc triển khai của bạn, và có rất nhiều thông tin bên ngoài để giúp bạn. Dù bạn có thể nghĩ SQL Server 2017 "chỉ là một bản port Linux", nhưng có những cải tiến thực tế đáng kể trong database engine cốt lõi mang lại lợi ích cho tất cả các nền tảng. Microsoft tiếp tục thêm chức năng bổ sung vào sản phẩm trong các bản cập nhật tích lũy SQL Server 2017, và SQL Server 2017 sẽ được hỗ trợ đầy đủ bởi Microsoft lâu hơn SQL Server 2016.
Tìm hiểu thêm về Cơ sở dữ liệu
Sử dụng tab Feedback để đưa ra bất kỳ nhận xét hoặc đặt câu hỏi nào. Bạn cũng có thể bắt đầu cuộc trò chuyện với chúng tôi.