Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Reading Pages  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
Cygapb-007
в то время как Гость333 ответил по существу вопроса и вполне однозначно

он вам тоже самое проиллюстрировал...что порядок не гарантирован (при том же распараллеливании, например), или вы по принципу: "смотрю в книгу..."
14 фев 13, 12:26    [13925340]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3348
Cygapb-007
Ennor Tiegael
пропущено...
Не припомню такого. Где там у меня два кластерника, ну-ка покажите.
13924338 :)
Хотите сказать, что в этом коде индекс IX_Test_Val является кластерным? Да вы еще неопытнее, чем я думал.
14 фев 13, 12:29    [13925374]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
Гость333
Member

Откуда:
Сообщений: 3683
для одной таблицы 2 кластерных индекса

При желании можно это сэмулировать:
create table XXX (id int identity primary key clustered, field_A int, field_B varchar(100), field_C datetime);
create index tipa_clustered on XXX (field_A) include (field_B, field_C);

Правда, есть ли в этом смысл, я не знаю.
14 фев 13, 12:30    [13925382]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Knyazev Alexey
Cygapb-007
в то время как Гость333 ответил по существу вопроса и вполне однозначно

он вам тоже самое проиллюстрировал...что порядок не гарантирован (при том же распараллеливании, например), или вы по принципу: "смотрю в книгу..."
Научитесь уже читать не только свои сообщения, пожалуйста.
Ваш ответ меня не устроил по причинам, приведенным в статьях про кластерные индексы. Опровержение статьи (в случае параллелизма) - приведено, при всем уважении, - не вами.
Опять же, пи всем уважении, ваш ответ очень похож на "Аллилуйя", поскольку пытается теорему превратить в аксиому.
14 фев 13, 12:32    [13925395]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
Glory
Member

Откуда:
Сообщений: 104760
Cygapb-007
Опять же, пи всем уважении, ваш ответ очень похож на "Аллилуйя", поскольку пытается теорему превратить в аксиому.

Мне вот интересно
Как же вы будете гарантировать теперь порядок в результатах ?
Уберете везде ORDER BY и будете создавать таблицы с единственным кластерным индексом ?
14 фев 13, 12:35    [13925419]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Гость333
для одной таблицы 2 кластерных индекса

При желании можно это сэмулировать:
create table XXX (id int identity primary key clustered, field_A int, field_B varchar(100), field_C datetime);
create index tipa_clustered on XXX (field_A) include (field_B, field_C);

Правда, есть ли в этом смысл, я не знаю.
Такого рода индексы мне встречались в предложениях оптимизатора для сложных запросов:) Но это все же, пмсм, не кластерные индексы, поскольку хранятся не встроенными в таблицу. Хотя да, они тоже содержат данные из строк таблицы, т.е. "в некотором роде кластерные".
14 фев 13, 12:38    [13925438]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10234
Блог
Cygapb-007
Опять же, пи всем уважении, ваш ответ очень похож на "Аллилуйя", поскольку пытается теорему превратить в аксиому.


ОК, т.е. на стандарты вам тоже всё-равно:

Самый главный совет, который Вы вынесете после прочтения этой статьи, соответствует стандарту ANSI SQL, который говорит, что запрос без предложения ORDER BY не гарантирует возвращения данных в каком либо порядке. Если нужно гарантировать, что данные будут возвращены в требующемся порядке, нужно указать это в предложении ORDER BY. Независимо оттого, что мы знаем (или думаем, что знаем) о внутренней организации SQL Server, продемонстрированные примеры должны послужить поводом для очередного переосмысления того, что мы делаем. Могут существовать такие методы доступа, о которых мы не знаем, которые могут использоваться только в определённых обстоятельствах, а также в будущих версиях SQL Server могут появиться новые методы доступа, или даже в следующих сервисных пакетах.

В таблице c кластеризованным индексом при возрастании уровня логической фрагментации просмотр в порядке распределения становится более эффективным, чем просмотр в порядке индекса.
14 фев 13, 12:38    [13925442]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
специально для невнимательных: 13925046
14 фев 13, 12:39    [13925457]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Cygapb-007
Опровержение статьи (в случае параллелизма)

Статью смотрел по диагонали, а что там неправильного?
14 фев 13, 12:48    [13925509]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
там утверждается, что в случае отсутствия явных указаний with (nolock) или tablock вывод всегда осуществляется в порядке кластерного индекса.
Как и в вашем эксперименте до параллелизма :)
14 фев 13, 12:51    [13925523]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
ээ... извиняюсь, вывод самостоятельный и отличается от приведенного в статье.
Вывод навеян результатами проведенных в статье экспериментов, которые игнорируются в финальных выводах статьи (и тогда непонятно, к чему они были проведены)
14 фев 13, 12:58    [13925590]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
нет, все же опровергнутый вывод не придуман :)
"что касается технических выводов и хорошей практики"
Просмотр в порядке распределения данных на листовом уровне индекса возможен, если определена подсказка NOLOCK или TABLOCK (или если SQL Server решит использовать rowset - блокировку с учётом реальной стоимости операции); во всех других случаях SQL Server будет использовать просмотр в порядке индекса.
14 фев 13, 13:07    [13925665]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34659
reading

а можно еще кроме "Mary goes round" ссылку или пример, когда еще без order by будет не тот порядок как на диске?


Любое параллельное выполнение запроса также тут же убъёт "физический порядок" следования записей.
14 фев 13, 13:12    [13925718]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37143
Чего мусолить-то уже вторую страницу?

Все же просто, как три копейки. Без указания order by могут быть следующие варианты:
а) Сервер выберет для доступа к данным кластерный индекс. Скан индекса (в принципе, любого) может быть упорядоченный, а может быть и нет. За это отвечает свойство ordered у операции, которую можно наблюдать в плане выполнения запроса.
б) Сервер выберет вообще некластерный индекс, у которого порядок редко совпадает с кластерным.

Поэтому кто не пишет order by, но при этом ожидает какой-то определенный да еще и гарантированный на таблицах любой структуры и на сервере любой версии порядок, тот сам себе злобный буратина и его никому не жалко ни разу.
14 фев 13, 13:16    [13925750]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34659
Cygapb-007
Уточню вопрос: или даже в случае кластерного индекса порядок вывода не гарантирован в силу действия механизма упреждающего чтения


Нет order by -- нет порядка. Есть order by -- есть порядок.

Какое слово из этих 10 тебе не понятно ?
14 фев 13, 13:18    [13925772]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Cygapb-007
нет, все же опровергнутый вывод не придуман :)
"что касается технических выводов и хорошей практики"
Просмотр в порядке распределения данных на листовом уровне индекса возможен, если определена подсказка NOLOCK или TABLOCK (или если SQL Server решит использовать rowset - блокировку с учётом реальной стоимости операции); во всех других случаях SQL Server будет использовать просмотр в порядке индекса.

Вроде параллелизм не опровергает этот вывод. Каждый процессор внутри выделенного ему куска данных "во всех других случаях будет использовать просмотр в порядке индекса". Каша получится при соединении этих кусков воедино.
14 фев 13, 13:23    [13925812]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Гость333
Cygapb-007
нет, все же опровергнутый вывод не придуман :)
пропущено...

Вроде параллелизм не опровергает этот вывод. Каждый процессор внутри выделенного ему куска данных "во всех других случаях будет использовать просмотр в порядке индекса". Каша получится при соединении этих кусков воедино.
Да-да, общий порядок вывода становится непредсказуемым - это вот и опровергает

PS для любителей дешевых наездов: был интересен не постулат "нет order by - нет порядка" а его основания. И вообще, после 13924965 пошел дешевый трёп в пользу самолюбования
14 фев 13, 13:28    [13925860]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
Glory
Member

Откуда:
Сообщений: 104760
Cygapb-007
был интересен не постулат "нет order by - нет порядка" а его основания.

Основания написаны в BOL
Прямо так и написано
ORDER BY guarantees a sorted result only for the outermost SELECT statement of a query. For example, consider the following view definition:

CREATE VIEW TopView AS
SELECT TOP 50 PERCENT * FROM Person.Person
ORDER BY LastName;

Then query the view:
SELECT * FROM TopView;

Although the view definition contains an ORDER BY clause, that ORDER BY clause is used only to determine the rows returned by the TOP clause. When querying the view itself, SQL Server does not guarantee the results will be ordered, unless you specify so explicitly, as shown in the following query:

А все остальное - это всего лишь попытка получения дополнительных знаний о внутренних механизмах сервера.
14 фев 13, 13:39    [13925974]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34659
Cygapb-007
Согласен, насчет единственности кластеризованного индекса погорячился.


Не, кластерный индекс действительно единственный.
Только порядок записей в результате запроса он не гарантирует.
14 фев 13, 13:44    [13926030]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34659
Гость333
Кластерный индекс упорядочивает данные логически. В процитированной вами статье говорится про физическое упорядочивание и доказывается, что при некоторых обстоятельствах его может и не быть вовсе.



Это что значит вообще ? Какое-такое логическое упорядочивание ?
14 фев 13, 13:46    [13926054]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Glory
А все остальное - это всего лишь попытка получения дополнительных знаний о внутренних механизмах сервера.
продолжая мысль: "И подлежит немедленному остракизму как еретичество" ?
14 фев 13, 13:48    [13926075]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34659
Cygapb-007
там утверждается, что в случае отсутствия явных указаний with (nolock) или tablock вывод всегда осуществляется в порядке кластерного индекса.
Как и в вашем эксперименте до параллелизма :)


Значит, лажовая статья. Не читай.
14 фев 13, 13:50    [13926089]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34659
Cygapb-007
там утверждается, что в случае отсутствия явных указаний with (nolock) или tablock вывод всегда осуществляется в порядке кластерного индекса.
Как и в вашем эксперименте до параллелизма :)


а что за статья-то ? ЧТо-то я запутался. Дай пож. прямую ссылку ещё раз на эту статью, чтобы прочитать.
14 фев 13, 13:52    [13926113]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
Glory
Member

Откуда:
Сообщений: 104760
Cygapb-007
продолжая мысль: "И подлежит немедленному остракизму как еретичество" ?

Остракизму подлежат подмена понятий.

Все "братки" носят золотые цепи. Из этого не следует, что любой, кто носит золотую цепь, является "братком".
14 фев 13, 13:53    [13926125]     Ответить | Цитировать Сообщить модератору
 Re: Reading Pages  [new]
Гость333
Member

Откуда:
Сообщений: 3683
MasterZiv
Гость333
Кластерный индекс упорядочивает данные логически. В процитированной вами статье говорится про физическое упорядочивание и доказывается, что при некоторых обстоятельствах его может и не быть вовсе.



Это что значит вообще ? Какое-такое логическое упорядочивание ?

http://msdn.microsoft.com/en-us/library/aa496062(v=sql.80).aspx
When you create a clustered index, SQL Server reorganizes the data pages so that the rows are logically stored in clustered-index order. SQL Server doesn't necessarily store the data physically on the disk in clustered-index order, but while creating an index, SQL Server attempts to physically order the data as close to the logical order as possible.
14 фев 13, 14:13    [13926243]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить