Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
На обсуждение два предположения. 1. По SQL Есть таблица которая хранит письма пользователей. table mails (rowid bigint, userid bigint, mail nvarchar(max)) Так вот если на эту табличку навестить индекс (не важно какой) на поле userid, то система на SQL начнет загибатся причем сильно загибатся (при delete & insert), если число записей в таблице будет свыше 100 миллионов и ежедневно будет добавлятся 100 тысяч. Полагаю, что при такой нагрузке Cache будет жить спокойней. Проблема для SQL будет в нагрузке на пересчет индексного дерева. Я реально видел, как SQL (правдо старый) умирал при меньших нагрузках - по той же причине. Прав ли я? 2. По Cache Данна таблица tovar(rowid bigint, tovar_id bigint, stoimost_edenitsi numeric(10,4), prodano int, data datetime) Select * from tovar where tovar_id in (19,234,234523, 23523523 ,523321,12312,1314235) OR stoimost_edenitsi*prodano int between 100.012 and 200.382 OR datetime between 'Mar 10, 2006 12:23:56' and 'Mar 30, 2006 01:23:17' я специально написал мудреный запрос, чтобы использовать максимально не строковые значения в запросе. Полагаю, что Cache в таком запросе при 1 000 0000 сильно уступит SQL. Можно рассмотреть как вариант с индексом для таблицы так и просто Full Scan. Прав ли я? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2006, 08:57 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Iura1. По SQL Есть таблица которая хранит письма пользователей. table mails (rowid bigint, userid bigint, mail nvarchar(max)) Так вот если на эту табличку навестить индекс (не важно какой) на поле userid, то система на SQL начнет загибатся причем сильно загибатся (при delete & insert), если число записей в таблице будет свыше 100 миллионов и ежедневно будет добавлятся 100 тысяч. Полагаю, что при такой нагрузке Cache будет жить спокойней. Проблема для SQL будет в нагрузке на пересчет индексного дерева. Я реально видел, как SQL (правдо старый) умирал при меньших нагрузках - по той же причине. Прав ли я? насчет Cache ты прав - не поморщится. в последней базе, с которой я возился и о которой писал, всасывается ежедневно от 100 до 200 тысяч записей в довольно развесистую структуру (9 индексов + штук 15 счетчиков). для SQL в полный рост встанет проблема размера БД. и если для Cache я могу оценить укладывание 90 млн. записей + (90 млн. * 8) индексов в 15.6Gb, то для SQL я даже боюсь прикидывать. Iura 2. По Cache Данна таблица tovar(rowid bigint, tovar_id bigint, stoimost_edenitsi numeric(10,4), prodano int, data datetime) Select * from tovar where tovar_id in (19,234,234523, 23523523 ,523321,12312,1314235) OR stoimost_edenitsi*prodano int between 100.012 and 200.382 OR datetime between 'Mar 10, 2006 12:23:56' and 'Mar 30, 2006 01:23:17' я специально написал мудреный запрос, чтобы использовать максимально не строковые значения в запросе. Полагаю, что Cache в таком запросе при 1 000 0000 сильно уступит SQL. Можно рассмотреть как вариант с индексом для таблицы так и просто Full Scan. Прав ли я? ты упорно хочешь использовать Cache-SQL? :) уф, при этом подходе - не знаю. при прямом доступе - никогда. нет, может проиграть даже при прямом доступе, если в SQL используется только одна таблица без индексов, где нет ни одного поля VARCHAR и результаты не сортируются/группируются/прочее, то есть максимально быстрый выбор по базе. в этом случае точно проиграет. не сильно, но все же. но это же несерьезно, ага С уважением. Сергей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2006, 16:39 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Iura Полагаю, что при такой нагрузке Cache будет жить спокойней. Проблема для SQL будет в нагрузке на пересчет индексного дерева. А как-будто в кэше нет индексного дерева? Я вот у себя проверил - сделал табличку с парой индексов create table #mails (rowid bigint identity, userid bigint, mail nvarchar(1000)) create index i on #mails(rowid) create index ii on #mails(userid) заполнил 2 млн записей лабуды (больше места у меня нет) insert #mails select rand()*10000,convert(varchar(111), newid()) дык вот еще 200000 записей добавляются по одной за 40 сек сделал таблику такую же, но без поля rowid и без индексов записи по одной туда добавлялись 28 сек из этой таблицу в первую все записи целиком добавились за 18 сек конечно между 2 и 100 млн разница есть, но разница между 40 сек и целым днём еще больше попробуйте у себя проверить - я например не думаю что время вставки существенно вырастет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2006, 18:35 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
SergSuper Iura Полагаю, что при такой нагрузке Cache будет жить спокойней. Проблема для SQL будет в нагрузке на пересчет индексного дерева. А как-будто в кэше нет индексного дерева? Я вот у себя проверил - сделал табличку с парой индексов create table #mails (rowid bigint identity, userid bigint, mail nvarchar(1000)) create index i on #mails(rowid) create index ii on #mails(userid) заполнил 2 млн записей лабуды (больше места у меня нет) insert #mails select rand()*10000,convert(varchar(111), newid()) дык вот еще 200000 записей добавляются по одной за 40 сек сделал таблику такую же, но без поля rowid и без индексов записи по одной туда добавлялись 28 сек из этой таблицу в первую все записи целиком добавились за 18 сек конечно между 2 и 100 млн разница есть, но разница между 40 сек и целым днём еще больше попробуйте у себя проверить - я например не думаю что время вставки существенно вырастет Ты сделай кластерный индекс по userid и закидай дачиком случайных числе и текст данные в таблицу. Накопи более 100 миллионов записей и посмотри как умирать начнет твой комп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2006, 20:43 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
IuraНа обсуждение два предположения. 1. По SQL Есть таблица которая хранит письма пользователей. table mails (rowid bigint, userid bigint, mail nvarchar(max)) Так вот если на эту табличку навестить индекс (не важно какой) на поле userid, то система на SQL начнет загибатся причем сильно загибатся (при delete & insert), если число записей в таблице будет свыше 100 миллионов и ежедневно будет добавлятся 100 тысяч. Полагаю, что при такой нагрузке Cache будет жить спокойней. Проблема для SQL будет в нагрузке на пересчет индексного дерева. Я реально видел, как SQL (правдо старый) умирал при меньших нагрузках - по той же причине. Прав ли я? Не прав. Во-первых индекс очень даже важно какой. Древовидные индексы имеют разное заполнение, очень может повлиять на производительность. Еще они бывают кластерными, а бывают и вовсе хеш индексы. Все работает по-разному в смысле производительности в разных ситуациях. Во-вторых есть еще, например, partishioned tables, там у каждой партиции может быть свой индекс и вообще без разницы сколько в таблице всего записей. Тестировали как-то вставку сайбез АСА 8 на 6 млн, существенного замедления по сравнению со 100000 не наблюдалось, работало на пару процентов медленнее. Вряд ли на 100 млн. вылезут принципиально новые проблемы. Оборудование было не серверное, обычный десктоп с иде дисками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2006, 23:11 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Iura Ты сделай кластерный индекс по userid и закидай дачиком случайных числе и текст данные в таблицу. Накопи более 100 миллионов записей и посмотри как умирать начнет твой комп. Убить при можно любую систему, дело только в наличии желания. Из хелпа по АСА9 CLUSTERED keyword The CLUSTERED attribute causes table rows to be stored in an approximate key order corresponding to the index . While the server makes an attempt to preserve key order, total clustering is not guaranteed. If a clustered index exists, the LOAD TABLE statement inserts rows into the table in the order of the index key, and the INSERT statement attempts to put new rows on the same table page as the one containing adjacent rows, as defined by the key order. Это ж оно пыталось перестроить таблицу (не индекс, а именно таблицу) каждый раз при добавлении новой записи со случайным значением в индекированном поле. Ну может не каждой, но периодически перестраивало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2006, 23:26 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
c127 Iura Ты сделай кластерный индекс по userid и закидай дачиком случайных числе и текст данные в таблицу. Накопи более 100 миллионов записей и посмотри как умирать начнет твой комп. Убить при можно любую систему, дело только в наличии желания. Из хелпа по АСА9 CLUSTERED keyword The CLUSTERED attribute causes table rows to be stored in an approximate key order corresponding to the index . While the server makes an attempt to preserve key order, total clustering is not guaranteed. If a clustered index exists, the LOAD TABLE statement inserts rows into the table in the order of the index key, and the INSERT statement attempts to put new rows on the same table page as the one containing adjacent rows, as defined by the key order. Это ж оно пыталось перестроить таблицу (не индекс, а именно таблицу) каждый раз при добавлении новой записи со случайным значением в индекированном поле. Ну может не каждой, но периодически перестраивало. Вот вот! Но и индекс тоже, чтобы хранить ссылку на страницу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 09:06 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
IuraТы сделай кластерный индекс по userid и закидай дачиком случайных числе и текст данные в таблицу. Накопи более 100 миллионов записей и посмотри как умирать начнет твой комп. У меня нет возможности сделать такую большую базу. Если у Вас есть - попробуйте и выложите цифры. Пока что есть только Ваши ощущения И кстати: зачем делать именно кластерный индекс? Его применение далеко не всегда оправдано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 10:54 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
c127Убить при можно любую систему, дело только в наличии желания. Из хелпа по АСА9 CLUSTERED keyword The CLUSTERED attribute causes table rows to be stored in an approximate key order corresponding to the index . While the server makes an attempt to preserve key order, total clustering is not guaranteed. If a clustered index exists, the LOAD TABLE statement inserts rows into the table in the order of the index key, and the INSERT statement attempts to put new rows on the same table page as the one containing adjacent rows, as defined by the key order. Это ж оно пыталось перестроить таблицу (не индекс, а именно таблицу) каждый раз при добавлении новой записи со случайным значением в индекированном поле. Ну может не каждой, но периодически перестраивало. Обратите внимание While the server makes an attempt to preserve key order, total clustering is not guaranteed. Не перестраивает asa каждый раз таблицу.Перестройка делается ручками при помощи reorganize table. А MSSQL, похоже, перестраивает каждый раз.(маловато информации в MSDN) MSDN 1 MSDN 2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 11:27 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Что значит спокойнее жить? Или беспокойнее? У нас ежедневно добавляется только 2 млн. записей (в mssql и такие же объемы в oracle). Таблички вроде немаленькие, да и место нужно прогнозировать и индексы там имеются и все живет и не загибается. ЗЫ: сусликофф видели? а они есть! :) ЗЫЫ: очередной флэйм, вместо разведения которого не проще взять и поделать тесты? пусть далеко не идеальные, но на которых можно выяснить что нужно для себя под конкретные свои задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 11:55 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Ценый совет и плюс в пользу MSSQL 2005 http://msdn.microsoft.com/SQL/default.aspx?pull=/library/en-us/dnsql90/html/sql2k5partition.asp&print=true ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 12:08 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
ilikerНе перестраивает asa каждый раз таблицу.Перестройка делается ручками при помощи reorganize table. А MSSQL, похоже, перестраивает каждый раз.(маловато информации в MSDN) MSDN 1 MSDN 2 При вставке записей ASA просто стремится ложить записи в конец не до конца заполненных страниц, которые по значениям кластерного ключа близки к вставляемым записям. При изменении записей сервер их оставляет на тех же страницах. В итоге получается этакая блоковая дефрагментация, где никто не гарантирует сортировки записей таблицы по кластерному ключу и страницы таблицы более менее содержат близкие по кластерному ключу записи, но не обязательно эти страницы идут одна за одной, что с моей точки зрения является вполне нормальным и оправданным демократичным подходом к организации кластерного ключа, где с одной стороны не тормозится скорость вставки новых записей, с другой стороны при выполнении запросов оптимизатор учитывает наличие кластерного ключа и получает более быстрое чтение записей засчет того, что они часто лежат в пределах одинаковых страниц. Для проведения физической полной онлайн дефрагментации таблицы по кластерному ключу (или PK eсли у теблицы нет кластерного ключа), используется оператор REORGINIZE TABLE, который во время работы не блокирует сессии и работает в фоновом режиме, незаметном для других сессий, действуя методом последовательного переноса записей в новые или пустые страницы, удаляя их с оригинальных, однако естественно реагируя на транзакции других сессий. В принципе для ASA кластерные ключи нужны достаточно редко - для таблиц с большим кол-вом записей, где запросами часто обрабатываются множества данных одного условия и соответствующе было бы не желательно на страницах держать записи разных условий, что привело бы к считыванию лишних страниц. Плюс встроенная поддержка параллейного считывания индексов и таблиц для RAID, где сервер сам определяет, какие страницы БД лежат на разных устройствах и их можно считывать параллейным доступом, дает вкупе с кластерным ключом неплохие результаты по производительности запросов (даже на обычном зеркале). MSSQL насколько я помню, физически держит отсортированными по кластерному ключу записи и каждый раз их перестраивает, что с моей точки зрения (и видимо разработчиков ASA) не самый оптимальный вариант реализации кластерного ключа и, помимо уменьшения скорости вставки записей в таблицу с кластерным ключом, может приводить к различным нехорошим эффектам, таким, как например блокировка страниц. -- www.rusug.ru - портал русскоязычной группы пользователей Sybase ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 12:12 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
ASCRUSMSSQL насколько я помню, физически держит отсортированными по кластерному ключу записи и каждый раз их перестраивает, что с моей точки зрения (и видимо разработчиков ASA) не самый оптимальный вариант реализации кластерного ключа и, помимо уменьшения скорости вставки записей в таблицу с кластерным ключом, может приводить к различным нехорошим эффектам, таким, как например блокировка страниц. память подвела... ;) в mssql2000 и далее есть такая штука, как fill factor, которая собственно и определяет, сколько свободного места резервировать на страницах нижнего уровня кластерного индекса. т.е. идентично ASA ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 12:20 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
SiDenУ нас ежедневно добавляется только 2 млн. записей (в mssql и такие же объемы в oracle). Таблички вроде немаленькие, да и место нужно прогнозировать и индексы там имеются и все живет и не загибается. интересно. а поконкретнее можно? сколько, например, это в мегабайтах (вместе с индексами, понятное дело)? С уважением. Сергей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 12:21 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
andy st ASCRUSMSSQL насколько я помню, физически держит отсортированными по кластерному ключу записи и каждый раз их перестраивает, что с моей точки зрения (и видимо разработчиков ASA) не самый оптимальный вариант реализации кластерного ключа и, помимо уменьшения скорости вставки записей в таблицу с кластерным ключом, может приводить к различным нехорошим эффектам, таким, как например блокировка страниц. память подвела... ;) в mssql2000 и далее есть такая штука, как fill factor, которая собственно и определяет, сколько свободного места резервировать на страницах нижнего уровня кластерного индекса. т.е. идентично ASA Да нет, по моему не подвела: MSSQL BOLClustered tables are tables that have a clustered index. The data rows are stored in order based on the clustered index key. The index is implemented as a B-tree index structure that supports fast retrieval of the rows based on their clustered index key values. The pages in each level of the index, including the data pages in the leaf level, are linked in a doubly-linked list, but navigation from one level to another is done using key values. то есть записи, в отличие от ASA хранятся в порядке сортировки кластерного ключа, что по идее означает их физическое перестраивание на странице(ах). Причем тут FILL FACTOR честно говоря не понял, это просто процент резервирования на страницах свободного места для полей с плавающей длиной (во всяком случае в ASA именно так). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 12:32 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
ASCRUS... ну если есть BOL - может стоит посмотреть повнимательнее? ;) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 12:42 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
вот некоторые таблички 68 млн записей, 29гиг данные, 16 - индекс 23 12 6 23 11 5,5 28 12,4 7 200 52 23 42 11 5 173 40 17 ... ширину считать лениво, но если оченно нужно, то могу посчитать структуру по определенным причинам привести не могу, но вообщем-то и не в этом суть, не понимаю при чем тут объемы если взять гис какую-нить, то там может быть мало записей, но вес... как впрочем и наоборот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 12:47 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Не стоит думать что SQL Server будет перестраивать 100 000 000 записей при одном добавлении. Да они храняться упорядоченно но перестраивается при добавлении и т.п. только одна страница, в крайнем случае разбивается на 2. Это абсолютно не влияет на быстродействие. Проблема не в отсортированности записей а в размере самого индекса. Кластерный он или нет не имеет значения. Единственный метод борьбы с тормозом в таком случае партишоны. -- Кто - еще до сражения - побеждает предварительным расчетом , у того шансов много (Сунь Цзы) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 12:52 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
ASCRUSто есть записи, в отличие от ASA хранятся в порядке сортировки кластерного ключа, что по идее означает их физическое перестраивание на странице(ах).Внутри страницы записи не сортируются в порядке кластерного ключа. Почитайте, например, Kalen Delaney "Inside SQL Server", и не надо будет фантазировать. P.S. Всегда восхищает способность людей - по капле воды догадаться о существовании океанов. На этом форуме, к сожалению, их особенно много :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 13:36 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
SiDenвот некоторые таблички 68 млн записей, 29гиг данные, 16 - индекс 23 12 6 23 11 5,5 28 12,4 7 200 52 23 42 11 5 173 40 17 ... ширину считать лениво, но если оченно нужно, то могу посчитать структуру по определенным причинам привести не могу, но вообщем-то и не в этом суть, не понимаю при чем тут объемы если взять гис какую-нить, то там может быть мало записей, но вес... как впрочем и наоборот сам размеры таблиц меня как-то слабо интересуют, меня интересовал именно суточный прирост объемов С уважением. Сергей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 14:00 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
ChAВнутри страницы записи не сортируются в порядке кластерного ключа. Почитайте, например, Kalen Delaney "Inside SQL Server", и не надо будет фантазировать. К слову - на курсах (авторизованных, а как же иначе...) по mssql2000 авторизованный тренер (типа преподаватель) наверно с полчаса рассказывал что в кластерном ключе mssql2000 хранит записи всегда сортированными и во всем наборе записей. Меня потом долго клинило, что же произошло - он на самом деле так считает или был вынужден повторять неудачный перевод BOL. Или он доверился проверке на десятке записей и поверил переводу. Надолго запомнилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 14:01 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
ASCRUS MSSQL BOLClustered tables are tables that have a clustered index. The data rows are stored in order based on the clustered index key. The index is implemented as a B-tree index structure that supports fast retrieval of the rows based on their clustered index key values. The pages in each level of the index, including the data pages in the leaf level, are linked in a doubly-linked list, but navigation from one level to another is done using key values. аж на душе потеплело, так все знакомо. именно так организованы структуры в M, ну и соответственно в том Cache, который здесь так дружно не любят. :) С уважением. Сергей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 14:03 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 14:42 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
зы: данные в Мб, первый столбец - общий объем, второй - используемый ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 14:45 |
|
||
|
Слабые стороны Cache & SQL
|
|||
|---|---|---|---|
|
#18+
ASCRUSто есть записи, в отличие от ASA хранятся в порядке сортировки кластерного ключа, что по идее означает их физическое перестраивание на странице(ах). Причем тут FILL FACTOR честно говоря не понял, это просто процент резервирования на страницах свободного места для полей с плавающей длиной (во всяком случае в ASA именно так). FILLFACTOR = fillfactor Specifies a percentage that indicates how full SQL Server should make the leaf level of each index page during index creation. When an index page fills up, SQL Server must take time to split the index page to make room for new rows, which is quite expensive. For update-intensive tables, a properly chosen FILLFACTOR value yields better update performance than an improper FILLFACTOR value. The value of the original FILLFACTOR is stored with the index in sysindexes. When FILLFACTOR is specified, SQL Server rounds up the number of rows to be placed on each page. For example, issuing CREATE CLUSTERED INDEX ... FILLFACTOR = 33 creates a clustered index with a FILLFACTOR of 33 percent. Assume that SQL Server calculates that 5.2 rows is 33 percent of the space on a page. SQL Server rounds so that six rows are placed on each page. MS SQL-ю можно указать сколько в процентах использовать места в страницах-листьях для кластерного индекса. При вставке запись делается на страницу с близкими значениями кластерного ключа, если не хватает места, то страница разделяется на две и идет добавление на одну из них. внутри страницы судя по BOL физической пересортировки не делается. ИТОГ: перестройка таблицы с кластерным индексом идет только тогда, когда запись не влезает на страницу. при этом происходит расщепление страницы и соответствующая перестройка индекса. Сравниваем: ASCRUS При вставке записей ASA просто стремится ложить записи в конец не до конца заполненных страниц, которые по значениям кластерного ключа близки к вставляемым записям. При изменении записей сервер их оставляет на тех же страницах. В итоге получается этакая блоковая дефрагментация, где никто не гарантирует сортировки записей таблицы по кластерному ключу и страницы таблицы более менее содержат близкие по кластерному ключу записи, но не обязательно эти страницы идут одна за одной, что с моей точки зрения является вполне нормальным и оправданным демократичным подходом к организации кластерного ключа, где с одной стороны не тормозится скорость вставки новых записей, с другой стороны при выполнении запросов оптимизатор учитывает наличие кластерного ключа и получает более быстрое чтение записей засчет того, что они часто лежат в пределах одинаковых страниц. ЗЫ извиняюсь за некоторую сумбурность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2006, 14:46 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=33729828&tid=1553584]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
31ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 176ms |
| total: | 276ms |

| 0 / 0 |
