![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
физическое хранение информации в MSSQL [MSSQL]
Maverick © (2005-08-29 18:10:00)Вопрос: если я создам таблицу вида
create table
(field1 varchar(4000))
но в поле буду хранить только по 1000 символов,
сколько строк таблицы будет содержаться на одной странице, 2 или 8?
evvcom (2005-08-30 15:05:00) [1]Кстати, [5] я писал как замечание к [4], т.е. имея в виду Oracle. Естественно на MSSQL физически все это может храниться совсем иначе.
Maverick (2005-08-30 13:38:00) [2]>Nikolay M.
Спасибо за ссылки
Anatoly Podgoretsky (2005-08-30 12:44:00) [3]Даже не совсем так, это ограничение на возращаемый запрос.
Anatoly Podgoretsky (2005-08-30 12:43:00) [4]Ega23 © (30.08.05 10:18) [9]
8160 байт из них кажется 8060 для пользователя.
Nikolay M. (2005-08-30 11:09:00) [5]
> Maverick (30.08.05 10:33) [11]
Физическое устройство хранения данных вряд-ли пригодится, а вот по индексам рекомендуется к прочтению:
http://www.sql.ru/articles/mssql/03013101Indexes.shtml
http://www.sql.ru/articles/mssql/01062201IndexesAndPerformance.shtml
Maverick (2005-08-30 10:33:00) [6]честно? :)
просто для понимания. вот сидел - создавал таблицы, индексы. и вдруг возник такой вопрос, а ответа найти не смог.
Nikolay M. (2005-08-30 10:23:00) [7]
> Maverick
Все-таки хотелось бы услышать от докладчика, зачем понадобилось сокровенное знание о страницах? :)
Ega23 (2005-08-30 10:18:00) [8]2 Anatoly Podgoretsky © (30.08.05 10:06) [7]
Сложный вопрос, противоречивый, я не смог найти в BOL информации по этому поводу. А разные специалисты говорят по разному.
Гм... Есть идея, как проверить. Насколько я помню, существует ограничение по количеству байт на 1 рекорд в таблице. Что-то типа 4048 байт. Можно попробовать создать таблицу из 1000 полей varchar(1000).
Maverick (2005-08-30 10:07:00) [9]ок, понял. спасибо :)
Anatoly Podgoretsky (2005-08-30 10:06:00) [10]evvcom © (30.08.05 08:55) [5]
Ega23 © (30.08.05 09:46) [6]
Сложный вопрос, противоречивый, я не смог найти в BOL информации по этому поводу. А разные специалисты говорят по разному.
Ega23 (2005-08-30 09:46:00) [11]AFAIK, если varchar, то в таблице у тебя 4 байта всегда будет. А сами данные - где-то в heap-е сервера
evvcom (2005-08-30 08:55:00) [12]
> если реальная длина varchar < 2000, то хранится все равно
> 2000
Нам на курсах говорили, что хранится столько, сколько есть. Вопрос только в том, где это хранится. Если до (не помню конкретное число, может и 2000, но по-моему все же 4 кБ), то тут же со всей остальной строкой, если больше, то часть со строкой, остальное там же, где и LOB-данные.
Desdechado (2005-08-29 18:53:00) [13]в оракле, например, для "улучшения производительности" если реальная длина varchar < 2000, то хранится все равно 2000, если больше, то реальная длина
Nikolay M. (2005-08-29 18:33:00) [14]Ты ничего не понял. 2+2=4 только при выполнении ряда аксиом и условий. Точно так же на твой вопрос НЕ существует однозначного ответа. Есть ли кластерный и прочие индексы? Как часто производится редактирование таблицы (степень фрагментации)? Или тебя интересует любая цифра, полученная с помощью арифметических действий, навжно, насколько далека она будет от действительности? Тогда лучше используй random().
Кстати, самое главное: а на кой тебе это нужно?
Maverick (2005-08-29 18:27:00) [15]похоже, что все-таки 2...
Nikolay M. (2005-08-29 18:17:00) [16]
DBCC SHOWCONTIG ('моя таблица')
+
BOL: Table and Index Architecture