Тип данных SQL Server Text или Varchar (max) создает слишком большие базы данных - PullRequest
1 голос
/ 23 марта 2012

Когда я использую тип данных SQL Server Text или Varchar(max) в столбце, он создает слишком большие базы данных: например, 1000 строк в одной таблице, содержащей varchar(max), используют около 1000 МБ (1 ГБ) !!!!

Это нормально?

спасибо за помощь

Редактировать мои текстовые поля размером от 5 до 50 кбайт MAX

Ответы [ 3 ]

1 голос
/ 23 марта 2012

это зависит от того, что находится внутри вашего стола. Если у вас есть 1000 строк с 1 МБ данных, у вас будет 1000 МБ

Попробуйте запустить:

select datalength(yourField) from yourTable

функция длины данных даст вам сколько байтов занято в столбце

0 голосов
/ 23 марта 2012

varchar (max) отличается от varchr (n);

ячейка varchar (max) может содержать данные объемом 2 ГБ.

, но для varchar (n): максимальное число n равно 8000, означает максимум 8 Кбайт данных.

но, в любом случае, я не знаю, какие данные вы хранили в своей базе данных.

Итак, вкратце, возможно нормально .

0 голосов
/ 23 марта 2012

Запустите sys.sp_spaceused @objname = N'YourTable ';чтобы увидеть пространство, используемое вашей таблицей.

Если нет неиспользуемого пространства, тогда ваши данные действительно занимают это пространство

Если есть много неиспользуемого пространства, вы можете попробовать создатьновая файловая группа и перемещение столбцов text / varchar (max) в эту новую файловую группу и сокращение базы данных DBCC SHRINKDB

После этого ваша основная файловая группа займет меньше места, и вы можете уменьшить «нарушающие»msgstr "файл, использующий DBCC SHRINKFILE, всякий раз, когда возникает проблема.

Создание новой файловой группы можно выполнить из SSMS, в свойствах базы данных, на странице файлов.Вы можете сгенерировать сценарий sql оттуда, чтобы увидеть, что происходит.

Перемещение текстовых столбцов в другую файловую группу можно выполнить с помощью TEXTIMAGE_ON {filegroup |"default"} в CREATE TABLE

Извините: невозможно изменить таблицу, нет отдельного столбца для другой файловой группы, но все "большие" столбцы одновременно.Таким образом, вы должны сделать это вручную или показать свою таблицу на новой диаграмме базы данных (в SSMS studio) и изменить свойство ... извините, я не знаю его имени, что-то вроде "Text / Image filegroup" (полагаю,У меня есть испанская SSMS), но она есть, когда вы видите свойства таблицы в конструкторе диаграмм базы данных.

Преимущества: меньшая фрагментация основной таблицы, более быстрые саканы табличного / кластерного индекса и возможность сокращения толькоинтересующий вас файл: с проблемными «большими» столбцами.

...