sp_spaceused (Transact-SQL)
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)
В системной хранимой процедуре отображается следующее sp_spaceused
:
количество строк, зарезервированных дискового пространства и дискового пространства, используемого таблицей, индексированного представления или очереди Service Broker в текущей базе данных
дисковое пространство зарезервировано и используется всей базой данных
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_spaceused
[ [ @objname = ] N'objname' ]
[ , [ @updateusage = ] 'updateusage' ]
[ , [ @mode = ] 'mode' ]
[ , [ @oneresultset = ] oneresultset ]
[ , [ @include_total_xtp_storage = ] include_total_xtp_storage ]
[ ; ]
Примечание.
Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.
Аргументы
Для Системы платформы Аналитики и аналитики Azure Synapse Analytics (PDW) sp_spaceused
необходимо указать именованные параметры (например sp_spaceused (@objname= N'Table1');
), а не полагаться на порядковое положение параметров.
[ @objname = ] N'objname'
Полное или неквалифицированное имя таблицы, индексированного представления или очереди, для которой запрашиваются сведения об использовании пространства. @objname — nvarchar(776) с значением по умолчаниюNULL
. Кавычки необходимы только в том случае, если указано уточненное имя объекта. Если указано полностью уточненное имя, включающее имя базы данных, именем базы данных должно быть имя текущей базы данных.
Если @objname не задано, результаты возвращаются для всей базы данных.
Примечание.
Azure Synapse Analytics и analytics Platform System (PDW) поддерживают только объекты базы данных и таблиц.
[ @updateusage = ] 'updateusage'
DBCC UPDATEUSAGE
Указывает, что следует запускать для обновления сведений об использовании пространства. @updateusage — varchar(5) с значением по умолчаниюfalse
. Если @objname не указан, инструкция выполняется во всей базе данных. В противном случае инструкция выполняется в @objname. Возможные значения — true
или false
.
[ @mode = ] 'mode'
Указывает область результатов. Для растянутой таблицы или базы данных параметр @mode позволяет включить или исключить удаленную часть объекта. Дополнительные сведения см. в разделе Stretch Database.
Внимание
Stretch Database устарел в SQL Server 2022 (16.x) и База данных SQL Azure. Эта функция будет удалена в будущей версии ядро СУБД. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.
@mode — varchar(11) и может быть одним из этих значений.
значение | Описание |
---|---|
ALL (по умолчанию) |
Возвращает статистику хранения объекта или базы данных, включая локальную часть и удаленную часть. |
LOCAL_ONLY |
Возвращает статистику хранения только локальной части объекта или базы данных. Если объект или база данных не включена Stretch, возвращает ту же статистику, что и при @modeALL . |
REMOTE_ONLY |
Возвращает статистику хранения только удаленной части объекта или базы данных. Этот параметр вызывает ошибку, если одно из следующих условий имеет значение true: Таблица не включена для Stretch. Таблица включена для Stretch, но вы никогда не включили миграцию данных. В этом случае удаленная таблица еще не имеет схемы. Пользователь вручную удалял удаленную таблицу. Подготовка удаленного архива данных вернула состояние success, но на самом деле не удалось. |
[ @oneresultset = ] oneresultset
Указывает, следует ли возвращать один результирующий набор. @oneresultset бит и может быть одним из следующих значений:
значение | Описание |
---|---|
0 (по умолчанию) |
Если @objname имеет значение NULL или не указано, возвращаются два результирующих набора. |
1 |
Если @objname NULL не указан или не указан, возвращается один результирующий набор. |
[ @include_total_xtp_storage = ] include_total_xtp_storage
Область применения: SQL Server 2017 (14.x) и более поздних версий и База данных SQL
Если задано 1
значение @oneresultset, этот параметр определяет, содержит ли один набор результатов столбцы для MEMORY_OPTIMIZED_DATA
хранилища. @include_total_xtp_storage бит с значением по умолчанию0
. Если 1
столбцы XTP включены в набор результатов.
Значения кода возврата
0
(успешно) или 1
(сбой).
Результирующий набор
Если @objname опущен и значение @oneresultset0
, возвращаются следующие результирующие наборы, чтобы предоставить текущие сведения о размере базы данных.
Имя столбца | Тип данных | Description |
---|---|---|
database_name |
nvarchar(128) | Имя текущей базы данных. |
database_size |
varchar(18) | Размер текущей базы данных в мегабайтах. database_size включает как файлы данных, так и журналы. |
unallocated space |
varchar(18) | Пространство в базе данных, которая не зарезервирована для объектов базы данных. |
Имя столбца | Тип данных | Description |
---|---|---|
reserved |
varchar(18) | Общий объем пространства, выделенный объектам в базе данных. |
data |
varchar(18) | Общий объем пространства, используемый данными. |
index_size |
varchar(18) | Общий объем пространства, используемый индексами. |
unused |
varchar(18) | Общий объем пространства, зарезервированный для объектов в базе данных, но пока не используемый. |
Если @objname опущен и значение @oneresultset1
, возвращается следующий результирующий набор для предоставления текущих сведений о размере базы данных.
Имя столбца | Тип данных | Description |
---|---|---|
database_name |
nvarchar(128) | Имя текущей базы данных. |
database_size |
varchar(18) | Размер текущей базы данных в мегабайтах. database_size включает как файлы данных, так и журналы. |
unallocated space |
varchar(18) | Пространство в базе данных, которая не зарезервирована для объектов базы данных. |
reserved |
varchar(18) | Общий объем пространства, выделенный объектам в базе данных. |
data |
varchar(18) | Общий объем пространства, используемый данными. |
index_size |
varchar(18) | Общий объем пространства, используемый индексами. |
unused |
varchar(18) | Общий объем пространства, зарезервированный для объектов в базе данных, но пока не используемый. |
Если указан @objname , для указанного объекта возвращается следующий результирующий набор.
Имя столбца | Тип данных | Description |
---|---|---|
name |
nvarchar(128) | Имя объекта, для которого были запрошены сведения об используемом пространстве. Имя схемы объекта не возвращается. Если требуется имя схемы, используйте sys.dm_db_partition_stats или sys.dm_db_index_physical_stats динамические административные представления для получения эквивалентных сведений о размере. |
rows |
char(20) | Количество существующих строк в таблице. Если указанный объект является очередью Service Broker, этот столбец указывает количество сообщений в очереди. |
reserved |
varchar(18) | Общий объем зарезервированного пространства для @objname. |
data |
varchar(18) | Общий объем пространства, используемого данными в @objname. |
index_size |
varchar(18) | Общий объем пространства, используемого индексами в @objname. |
unused |
varchar(18) | Общий объем пространства, зарезервированного для @objname , но еще не использован. |
Этот режим используется по умолчанию, если параметры не указаны. Следующие результирующие наборы возвращают сведения о размере базы данных на диске.
Имя столбца | Тип данных | Description |
---|---|---|
database_name |
nvarchar(128) | Имя текущей базы данных. |
database_size |
varchar(18) | Размер текущей базы данных в мегабайтах. database_size включает как файлы данных, так и журналы. Если база данных содержит файловую группу, это значение включает общий MEMORY_OPTIMIZED_DATA размер всех файлов контрольных точек на диске в файловой группе. |
unallocated space |
varchar(18) | Пространство в базе данных, которая не зарезервирована для объектов базы данных. Если база данных имеет файловую группу, это значение включает общий MEMORY_OPTIMIZED_DATA размер файлов контрольных точек на диске с состоянием PRECREATED в файловой группе. |
Пространство, используемое таблицами в базе данных. Этот результирующий набор не отражает оптимизированные для памяти таблицы таблицы, так как для каждой таблицы не выполняется учет использования дисков:
Имя столбца | Тип данных | Description |
---|---|---|
reserved |
varchar(18) | Общий объем пространства, выделенный объектам в базе данных. |
data |
varchar(18) | Общий объем пространства, используемый данными. |
index_size |
varchar(18) | Общий объем пространства, используемый индексами. |
unused |
varchar(18) | Общий объем пространства, зарезервированный для объектов в базе данных, но пока не используемый. |
Следующий результирующий набор возвращается только в том случае, если база данных имеет файловую группу с хотя бы одним контейнером MEMORY_OPTIMIZED_DATA
:
Имя столбца | Тип данных | Description |
---|---|---|
xtp_precreated |
varchar(18) | Общий размер файлов контрольных точек с состоянием PRECREATED в КБ. Подсчитывается к нераспределированному пространству в базе данных в целом. Например, если в этом столбце содержится 600000 KB 600 000 КБ предварительно созданных файлов контрольных точек. |
xtp_used |
varchar(18) | Общий размер файлов контрольных точек с состояниями UNDER CONSTRUCTION и ACTIVE MERGE TARGET базами знаний. Это значение — это место на диске, активно используемое для данных в оптимизированных для памяти таблицах. |
xtp_pending_truncation |
varchar(18) | Общий размер файлов контрольных точек с состоянием WAITING_FOR_LOG_TRUNCATION в КБ. Это значение — это место на диске, используемое для файлов контрольных точек, ожидающих очистки, после усечения журнала. |
Если @objname опущен, значение @oneresultset равно 1
и @include_total_xtp_storage1
, возвращается следующий один результирующий набор для предоставления текущих сведений о размере базы данных. Если @include_total_xtp_storage ( 0
по умолчанию), последние три столбца опущены.
Имя столбца | Тип данных | Description |
---|---|---|
database_name |
nvarchar(128) | Имя текущей базы данных. |
database_size |
varchar(18) | Размер текущей базы данных в мегабайтах. database_size включает как файлы данных, так и журналы. Если база данных содержит файловую группу, это значение включает общий MEMORY_OPTIMIZED_DATA размер всех файлов контрольных точек на диске в файловой группе. |
unallocated space |
varchar(18) | Пространство в базе данных, которая не зарезервирована для объектов базы данных. Если база данных имеет файловую группу, это значение включает общий MEMORY_OPTIMIZED_DATA размер файлов контрольных точек на диске с состоянием PRECREATED в файловой группе. |
reserved |
varchar(18) | Общий объем пространства, выделенный объектам в базе данных. |
data |
varchar(18) | Общий объем пространства, используемый данными. |
index_size |
varchar(18) | Общий объем пространства, используемый индексами. |
unused |
varchar(18) | Общий объем пространства, зарезервированный для объектов в базе данных, но пока не используемый. |
xtp_precreated 1 |
varchar(18) | Общий размер файлов контрольных точек с состоянием PRECREATED в КБ. Это значение учитывается в отношении нераспределенного пространства в базе данных в целом. Возвращает, NULL если база данных не имеет файловой группы с хотя бы одним контейнером MEMORY_OPTIMIZED_DATA . |
xtp_used 1 |
varchar(18) | Общий размер файлов контрольных точек с состояниями UNDER CONSTRUCTION и ACTIVE MERGE TARGET базами знаний. Это значение — это место на диске, активно используемое для данных в оптимизированных для памяти таблицах. Возвращает, NULL если база данных не имеет файловой группы с хотя бы одним контейнером MEMORY_OPTIMIZED_DATA . |
xtp_pending_truncation 1 |
varchar(18) | Общий размер файлов контрольных точек с состоянием WAITING_FOR_LOG_TRUNCATION в КБ. Это значение — это место на диске, используемое для файлов контрольных точек, ожидающих очистки, после усечения журнала. Возвращает, NULL если база данных не имеет файловой группы с хотя бы одним контейнером MEMORY_OPTIMIZED_DATA . |
1 Только если для @include_total_xtp_storage задано 1
значение .
Замечания
Значениеdatabase_size
, как правило, больше reserved
unallocated space
+ суммы, так как оно включает размер файлов журнала, но reserved
и unallocated_space
рассмотрите только страницы данных. В некоторых случаях с Azure Synapse Analytics эта инструкция может не быть верной.
Страницы, используемые XML-индексами и полнотекстовых индексов, включаются index_size
в оба результирующих набора. При указании @objname страницы xml-индексов и полнотекстовых индексов для объекта также учитываются в общей reserved
сумме и index_size
результатах.
Если использование пространства вычисляется для базы данных или объекта, являющегося пространственным индексом, столбцы размера пространства, например database_size
reserved
, и index_size
включают размер пространственного индекса.
При указании @updateusage SQL Server ядро СУБД сканирует страницы данных в базе данных и sys.partitions
вносит все необходимые исправления sys.allocation_units
в представления каталога в отношении места хранения, используемого каждой таблицей. Существуют некоторые ситуации, например после удаления индекса, когда сведения о пространстве таблицы могут не быть текущими. @updateusage может занять некоторое время для выполнения в больших таблицах или базах данных. Используйте @updateusage только в том случае, если возвращаются неправильные значения, и если процесс не оказывает негативного влияния на других пользователей или процессы в базе данных. При желании DBCC UPDATEUSAGE
можно выполнять отдельно.
Примечание.
При удалении или перестроении больших индексов или удалении или усечении больших таблиц ядро СУБД откладывает фактическое размещение сделки страниц и связанные с ними блокировки до тех пор, пока транзакция не будет зафиксирована. Отложенные операции удаления немедленно не освобождают выделенное пространство. Таким образом, значения, возвращаемые sp_spaceused
сразу после удаления или усечения большого объекта, могут не отражать фактическое свободное место на диске.
Разрешения
Разрешение на выполнение sp_spaceused
предоставляется общедоступной роли. Параметр @updateusage могут указывать только члены предопределенной роли базы данных db_owner.
Примеры
А. Отображение сведений о пространстве диска для таблицы
В следующем примере предоставляются сведения о месте на диске для таблицы Vendor
и ее индексах.
USE AdventureWorks2022;
GO
EXEC sp_spaceused N'Purchasing.Vendor';
GO
B. Отображение обновленных сведений о пространстве базы данных
В следующем примере суммируется пространство, используемое в текущей базе данных, и используется необязательный параметр @updateusage для обеспечения возврата текущих значений.
USE AdventureWorks2022;
GO
EXEC sp_spaceused @updateusage = N'TRUE';
GO
В. Отображение сведений об использовании пространства для удаленной таблицы, связанной с таблицей с поддержкой Stretch
В следующем примере приводится сводка пространства, используемого удаленной таблицей, связанной с таблицей с поддержкой Stretch, с помощью аргумента @mode для указания удаленного целевого объекта. Дополнительные сведения см. в разделе Stretch Database.
USE StretchedAdventureWorks2022;
GO
EXEC sp_spaceused N'Purchasing.Vendor', @mode = 'REMOTE_ONLY';
D. Отображение сведений об использовании пространства для базы данных в одном результирующем наборе
В следующем примере приводится сводка использования пространства для текущей базы данных в одном результирующем наборе.
USE AdventureWorks2022;
GO
EXEC sp_spaceused @oneresultset = 1;
Е. Отображение сведений об использовании пространства для базы данных с по крайней мере одной MEMORY_OPTIMIZED файловой группой в одном результирующем наборе
В следующем примере приводится сводка использования пространства для текущей базы данных с хотя бы одной MEMORY_OPTIMIZED
группой файлов в одном результирующем наборе.
USE WideWorldImporters
GO
EXEC sp_spaceused @updateusage = 'FALSE',
@mode = 'ALL',
@oneresultset = '1',
@include_total_xtp_storage = '1';
GO
F. Отображение сведений об использовании пространства для объекта таблицы MEMORY_OPTIMIZED в базе данных
В следующем примере приводится сводка использования пространства для объекта таблицы в текущей MEMORY_OPTIMIZED
базе данных по крайней мере с одной MEMORY_OPTIMIZED
группой файлов.
USE WideWorldImporters
GO
EXEC sp_spaceused @objname = N'VehicleTemparatures',
@updateusage = 'FALSE',
@mode = 'ALL',
@oneresultset = '0',
@include_total_xtp_storage = '1';
GO
Связанный контент
- Инструкция CREATE INDEX (Transact-SQL)
- CREATE TABLE (Transact-SQL)
- DBCC UPDATEUSAGE (Transact-SQL)
- Service Broker
- sys.allocation_units (Transact-SQL)
- sys.indexes (Transact-SQL)
- sys.index_columns (Transact-SQL)
- sys.objects (Transact-SQL)
- sys.partitions (Transact-SQL)
- Системные хранимые процедуры (Transact-SQL)