2016-08-09 1 views
0

Предположим, что мой SQL-сервер DB установлен на жестком диске 1 ГБ. Теперь, когда я создаю таблицы с бесконечным циклом в этой БД, но не добавляя никаких строк в какую-либо таблицу. После того, сколько таблиц моя БД (с ограничением в 1 ГБ) выйдет из пределов пространства и прервет цикл.Каким будет размер данных схемы таблицы (метаданных) в БД?

+0

Здесь вы задаете два разных вопроса. SQL Server попытается выделить дополнительное пространство на жестком диске задолго до того, как его текущий файл данных будет заполнен фактическими данными. –

+1

Попробуйте и сообщите нам, что выйдет :) – NickyvV

+0

Не знаю, сколько это было бы на самом деле, но это будет сильно зависеть от того, как долго вы являетесь объектными именами, сколько столбцов у него есть и длина их имен. Количество ограничений и их имена. – MWillemse

ответ

1

От MSDN

table_size = (size of each index added together) + (row size * row count) 

Таким образом, для таблицы без каких-либо строк или записей, ответ не очень много места, поэтому большое количество таблиц могут быть созданы

+0

мое фактическое требование знать sizeof информации метаданных каждой таблицы без данных в ее строках ... – h4it

+0

Зачем вам нужна информация в любом случае? – David

1

Это зависит от нескольких вещей ; Сколько столбцов вы добавляете к каждой таблице? Каждое имя столбца может содержать до 128 байт. Тип info (system_type_id, user_type_id) и object_id тоже будут содержать некоторые байты.

Вы используете флаг Trace 1117 и/или 1118? Если это так, для таблицы назначается размер 64 кБ вместо страницы 8 КБ. EDIT: это не выделяется при создании таблицы, только при добавлении первой строки. Если все строки удалены, первая страница/степень все еще «принадлежит» таблице.

Вы добавили индекс? Если да, то в sys.indexes будут строки.

Разделяются ли ваши таблицы? затем добавляется много байтов.

Смежные вопросы