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

2 cách lấy thông tin phân vùng cho bảng trong SQL Server (T-SQL)

Dưới đây là một số cách để trả về thông tin phân vùng cho một bảng trong SQL Server.

  • Bạn có thể sử dụng sys.partitions chế độ xem danh mục hệ thống để trả về thông tin phân vùng cho một bảng và hầu hết các loại chế độ xem.
  • Bạn có thể sử dụng sys.dm_db_partition_stats chế độ xem quản lý động hệ thống để trả về trang và thông tin về số hàng cho mọi phân vùng trong cơ sở dữ liệu hiện tại.

Nếu một bảng hoặc chỉ mục chưa được phân vùng, các chế độ xem này sẽ vẫn trả về thông tin phân vùng (với phân_lượng trong tổng số 1 ). Điều này là do tất cả các bảng và chỉ mục trong SQL Server chứa ít nhất một phân vùng, cho dù chúng có được phân vùng rõ ràng hay không.

sys.partitions

sys.partitions dạng xem chứa một hàng cho mỗi phân vùng của tất cả các bảng và hầu hết các loại chỉ mục trong cơ sở dữ liệu. Các loại chỉ mục đặc biệt như Toàn văn, Không gian và XML không được bao gồm.

Đây là một ví dụ để chứng minh.

SELECT *
FROM sys.partitions
WHERE object_id = OBJECT_ID('Movies');

Kết quả:

+-------------------+-------------+------------+--------------------+-------------------+--------+---------------------------+--------------------+-------------------------+
| partition_id      | object_id   | index_id   | partition_number   | hobt_id           | rows   | filestream_filegroup_id   | data_compression   | data_compression_desc   |
|-------------------+-------------+------------+--------------------+-------------------+--------+---------------------------+--------------------+-------------------------|
| 72057594049986560 | 91147370    | 1          | 1                  | 72057594049986560 | 0      | 0                         | 0                  | NONE                    |
| 72057594050052096 | 91147370    | 1          | 2                  | 72057594050052096 | 100    | 0                         | 0                  | NONE                    |
| 72057594050117632 | 91147370    | 1          | 3                  | 72057594050117632 | 3979   | 0                         | 0                  | NONE                    |
| 72057594050183168 | 91147370    | 1          | 4                  | 72057594050183168 | 0      | 0                         | 0                  | NONE                    |
+-------------------+-------------+------------+--------------------+-------------------+--------+---------------------------+--------------------+-------------------------+

Chúng ta có thể thấy rằng có bốn phân vùng cho bảng này.

Đây là một lần nữa, lần này sử dụng đầu ra dọc (để giúp bạn không phải cuộn sang ngang):

-[ RECORD 1 ]-------------------------
partition_id            | 72057594049986560
object_id               | 91147370
index_id                | 1
partition_number        | 1
hobt_id                 | 72057594049986560
rows                    | 0
filestream_filegroup_id | 0
data_compression        | 0
data_compression_desc   | NONE
-[ RECORD 2 ]-------------------------
partition_id            | 72057594050052096
object_id               | 91147370
index_id                | 1
partition_number        | 2
hobt_id                 | 72057594050052096
rows                    | 100
filestream_filegroup_id | 0
data_compression        | 0
data_compression_desc   | NONE
-[ RECORD 3 ]-------------------------
partition_id            | 72057594050117632
object_id               | 91147370
index_id                | 1
partition_number        | 3
hobt_id                 | 72057594050117632
rows                    | 3979
filestream_filegroup_id | 0
data_compression        | 0
data_compression_desc   | NONE
-[ RECORD 4 ]-------------------------
partition_id            | 72057594050183168
object_id               | 91147370
index_id                | 1
partition_number        | 4
hobt_id                 | 72057594050183168
rows                    | 0
filestream_filegroup_id | 0
data_compression        | 0
data_compression_desc   | NONE

sys.dm_db_partition_stats

Chế độ xem sys.dm_db_partition_stats trả về trang và thông tin về số hàng cho mọi phân vùng trong cơ sở dữ liệu hiện tại. Nhưng nếu bạn chỉ quan tâm đến một bảng, bạn cũng có thể thu hẹp nó xuống chỉ bảng đó.

Đây là một ví dụ.

SELECT *
FROM sys.dm_db_partition_stats
WHERE object_id = OBJECT_ID('Movies');

Kết quả:

+-------------------+-------------+------------+--------------------+--------------------------+--------------------------+------------------------------+-----------------------+---------------------------+--------------------------------+------------------------------------+-------------------+-----------------------+-------------+
| partition_id      | object_id   | index_id   | partition_number   | in_row_data_page_count   | in_row_used_page_count   | in_row_reserved_page_count   | lob_used_page_count   | lob_reserved_page_count   | row_overflow_used_page_count   | row_overflow_reserved_page_count   | used_page_count   | reserved_page_count   | row_count   |
|-------------------+-------------+------------+--------------------+--------------------------+--------------------------+------------------------------+-----------------------+---------------------------+--------------------------------+------------------------------------+-------------------+-----------------------+-------------|
| 72057594049986560 | 91147370    | 1          | 1                  | 0                        | 0                        | 0                            | 0                     | 0                         | 0                              | 0                                  | 0                 | 0                     | 0           |
| 72057594050052096 | 91147370    | 1          | 2                  | 1                        | 2                        | 9                            | 0                     | 0                         | 0                              | 0                                  | 2                 | 9                     | 100         |
| 72057594050117632 | 91147370    | 1          | 3                  | 13                       | 15                       | 33                           | 0                     | 0                         | 0                              | 0                                  | 15                | 33                    | 3979        |
| 72057594050183168 | 91147370    | 1          | 4                  | 0                        | 0                        | 0                            | 0                     | 0                         | 0                              | 0                                  | 0                 | 0                     | 0           |
+-------------------+-------------+------------+--------------------+--------------------------+--------------------------+------------------------------+-----------------------+---------------------------+--------------------------------+------------------------------------+-------------------+-----------------------+-------------+

Ở đây, nó lại được sử dụng đầu ra theo chiều dọc:

-[ RECORD 1 ]-------------------------
partition_id                     | 72057594049986560
object_id                        | 91147370
index_id                         | 1
partition_number                 | 1
in_row_data_page_count           | 0
in_row_used_page_count           | 0
in_row_reserved_page_count       | 0
lob_used_page_count              | 0
lob_reserved_page_count          | 0
row_overflow_used_page_count     | 0
row_overflow_reserved_page_count | 0
used_page_count                  | 0
reserved_page_count              | 0
row_count                        | 0
-[ RECORD 2 ]-------------------------
partition_id                     | 72057594050052096
object_id                        | 91147370
index_id                         | 1
partition_number                 | 2
in_row_data_page_count           | 1
in_row_used_page_count           | 2
in_row_reserved_page_count       | 9
lob_used_page_count              | 0
lob_reserved_page_count          | 0
row_overflow_used_page_count     | 0
row_overflow_reserved_page_count | 0
used_page_count                  | 2
reserved_page_count              | 9
row_count                        | 100
-[ RECORD 3 ]-------------------------
partition_id                     | 72057594050117632
object_id                        | 91147370
index_id                         | 1
partition_number                 | 3
in_row_data_page_count           | 13
in_row_used_page_count           | 15
in_row_reserved_page_count       | 33
lob_used_page_count              | 0
lob_reserved_page_count          | 0
row_overflow_used_page_count     | 0
row_overflow_reserved_page_count | 0
used_page_count                  | 15
reserved_page_count              | 33
row_count                        | 3979
-[ RECORD 4 ]-------------------------
partition_id                     | 72057594050183168
object_id                        | 91147370
index_id                         | 1
partition_number                 | 4
in_row_data_page_count           | 0
in_row_used_page_count           | 0
in_row_reserved_page_count       | 0
lob_used_page_count              | 0
lob_reserved_page_count          | 0
row_overflow_used_page_count     | 0
row_overflow_reserved_page_count | 0
used_page_count                  | 0
reserved_page_count              | 0
row_count                        | 0

Bảng mẫu này đã được phân vùng bằng cách sử dụng phương pháp được khuyến nghị của Microsoft để giữ các phân vùng trống ở cả hai đầu của phạm vi phân vùng. Điều này đảm bảo rằng bất kỳ sự phân chia / hợp nhất phân vùng nào trong tương lai không gây ra bất kỳ sự di chuyển dữ liệu không mong muốn nào.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách kiểm tra xem một thủ tục được lưu trữ có tồn tại hay không trước khi tạo nó

  2. CHỌN CHO TỰ ĐỘNG XML và trả về các kiểu dữ liệu

  3. SQL Server sử dụng CPU cao khi tìm kiếm bên trong chuỗi nvarchar

  4. SQL Server:Sự khác biệt giữa CROSS JOIN và FULL OUTER JOIN là gì?

  5. Triển khai phân trang bằng cách sử dụng OFFSET FETCH NEXT trong SQL Server