|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Ariochне знал... значит на курсах у меня ты не был. :-) более того, список номеров записей перед вытаскиванием записей еще и сортируется, чтобы чтение было упорядочено по страницам данных, а не по ключам. Иначе io будет в десятки раз выше. Как например, при "навигации по индексу". http://ibaseforum.ru/viewtopic.php?f=4&t=4175 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 14:56 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Polesov, у меня на твоём файле воспроизвелось. По DDL вроде всё нормально. Уж не знаю что там произошло. Странно что ALTER INDEX ... ACTIVE COMMIT действительно не даёт никаких ошибок. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 14:59 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
kdv, не был, "раньше котлеты не подгорали" :-) я уже глянул в dataaccesspaths на эту тему с неверсионными индексами в целом разумно но всё же первая мысль "а вот сейчас карта большой таблицы каааак вылезет за пределы оперативки отпущенной серверу" :-) если бы заранее оценивать размер выборки - большой он или маленький ожидается - и что будет дешевле в итоге, строить карту или рисковать вытеснением уже прочитанных страниц из кэша.... то есть для уникальных индексов Where x=y запрос явно будет дешевле без промежуточного картирования для неуникальных индексов с хорошей селективностью - тоже а если отбор ещё условно "для грида" и до конца фетчиться никогда не будет - то держать в память карту просто попусту тратить память :-( ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 15:14 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Симонов Денис, AS. цикл active->inactive->active тоже ? у вас там вроде есть инструменты напрямую в fbk-файлах ковыряться? ещё одна сумасшедшая идея, что изначально ID был другим целым числом, например int16, а не int32, или ещё каким-нибудь numeric/decimal и поэтому в этих экземплярах записи хотя значения и одно, храниться оно разными битами ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 15:17 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Arioch, по словам ТСа он даже PK пересоздал. Так что у меня нет даже предположений что случилось. А копанием во внутренностях я не занимаюсь, не путай меня с kdv. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 15:25 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Polesov, Баг подтверждаю, регрессия в 2.5.3 :( В трекер занесёшь ? PS 7z сказать где лежит ? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 15:28 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Ariochно всё же первая мысль "а вот сейчас карта большой таблицы каааак вылезет за пределы оперативки отпущенной серверу" :-) если бы заранее оценивать размер выборки - большой он или маленький ожидается - и что будет дешевле в итоге, строить карту или рисковать вытеснением уже прочитанных страниц из кэша.... то есть для уникальных индексов Where x=y запрос явно будет дешевле без промежуточного картирования для уникальных индексов и индексов с хорошей селективностью карта большой не будет. Другое дело что будет большое количество выделений и освобождений памяти. Так что для уникальных индексов её действительно дешевле не строить, всё равно уникальный индекс даст не более одной записи, а остальные индексы скорее всего задействованы не будут. А вот насчёт неуникальных с хорошей селективностью вопрос спорный. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 15:31 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
hvladБаг подтверждаю, баг-то в чем? волшебное значение столбца, для которого может быть создано N ключей (больше 1) в уникальном индексе? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 15:43 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Ariochа вот сейчас карта большой таблицы каааак вылезет за пределы оперативки отпущенной серверу к примеру, таблица с 2 760 304 951 записей, занимает 249 гиг. Индекс (их много) по одному столбцу, в зависимости от распределения значений - в среднем 100 гиг (от 63 до 122). Но если в качестве "битовой карты" даже использовать просто массив номеров записей, то Record_count * 8 = 21 гиг. Да, может не влезть. Но как-то никто пока не жаловался. :-) А для настоящей битовой карты будет Record_count / 8, то есть 329 мб. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 15:53 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Ariochс неверсионными индексами в целом разумно при чем тут "неверсионные" индексы? речь про выборку записей по найденным в индексе их номерам. Хоть с версиями, хоть без, надо сначала номера записей из ключей выбрать. А потом уже можно или по этим номерам записей ехать по data pages, или "склеивать" такие массивы номеров как битовые, при and/or и прочем. Некоторые сервера могут выдавать данные и без обращения к таблице, это уже "индексное покрытие", другая тема. Вот в ней уже "неверсионность" индекса является определяющей. p.s. по поводу ключей с номерами транзакций. 28.10.2014 [Firebird-devel] Indexes - things to think about for V 3) Transaction IDs in index keys Someone mentioned including transaction ids in the index key to avoid reading record data when using an index that provides all needed information. Those situations are real - count of customers in Mexico, junction records for M to M relationships, etc. In some cases, two transaction ids are required - one for the transaction that created entry and the transaction superseded it. That's potentially 16 bytes subtracted from the key size. OK, maybe not so big a problem, but it also means that when a key changes, the change must be made in two places. But you know all those arguments. Jim's going to hate this. Might it be possible to have a second sort of index specifically for those cases where the read efficiency outweighs the storage and management overhead? Yes, one more place where the application designer can be blamed for poor performance. короче, полная шляпа. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 16:03 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
hvladPolesov, Баг подтверждаю, регрессия в 2.5.3 :( В трекер занесёшь ? А что именно написать? Файл БД надо прикладывать? P.S. Про то, что файл не сжал - извиняюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 16:06 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
hvladВ трекер занесёшь ? CORE-5161 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 16:31 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Polesov, спасибо ! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 16:42 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Polesov, что же ты туда архивированную БД не приложил? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 16:50 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Симонов Денис, тест я сейчас сделаю ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 17:23 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
kdvА для настоящей битовой карты будет Record_count / 8, то есть 329 мб. Ну да, и если там реально надо форму заполнить для юзера с 20-40 строками, и 99% что пользователь больше и не будет смотреть, то как ни странно 40 fetch page по памяти бы куда дешевле влезло. Теперь представить десяток таких пользователей и открытыекурсоры (для тех немногих, кто все же начнет прокручивать грид вниз).... И на сильно загруженном сервере эта радость начнет весело пейджиться. вспомнилось, к вопросу об анекдотах, у клиента начались дикие тормоза, вот вообще FB не жил, при том что никаких нехваток ресурсов его процессу не было даже близко. Довольно быстро выяснилось, что всю память загрёб MSI Installer закачавший патчи для MS SQL и терпеливо ждущий перезагрузки. Но тормоза почему-то проявились из всего крутившегося на сервере именно на FB С памятью кэшей, настраиваемой в firebird.conf битовые карты не пересекаются? а то ещё и кэш вытеснять начнут... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 20:33 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Симонов Денисдля уникальных индексов и индексов с хорошей селективностью карта большой не будет. почему? размер битовой карты зависит исключительно от "грязного" количества записей в таблице, сами индексы (их характеристики) тут не при чём ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 20:34 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
kdv, ну Jim вообще в итоге от версионности ушел, точнее решил, что версии нужны только в памяти ,но не на диске ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 20:42 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Arioch, битовая карта - это разреженный массив битов. В таком массиве неустановленные элементы не хранятся (хотя зависит от реализации). Если я правильно понял исходники, то для индексов битовая карта объявлена здесь /src/jrd/sbm.h а сам разреженный массив битов здесь /src/common/classes/sparce_bitmap.h Сама по себе структура очень экономная. И максимум памяти будет занимать только когда ключ будет указывать на все записи, т.е. когда индекс будет иметь отвратительную селективность. AriochС памятью кэшей, настраиваемой в firebird.conf битовые карты не пересекаются битовые карты и кэш вещи перпендикулярные ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2016, 21:46 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Симонов ДенисArioch, битовая карта - это разреженный массив битов. В таком массиве неустановленные элементы не хранятся (хотя зависит от реализации). .... Нет. [cencored] ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2016, 20:39 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Siemargl, ты не знаешь способы организации разреженных массивов? Вот одна из них http://lord-n.narod.ru/download/books/walla/programming/Spr_po_C/23/2303.htm ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2016, 20:58 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Симонов Денис, Тебе как документописателю недопустимо путать понятия https://ru.wikipedia.org/wiki/Битовая_карта ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2016, 21:01 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Siemargl, вот жеж не верующий. Я тебе даже файлы привел с исходниками /src/jrd/sbm.h Код: plaintext 1. 2. 3. 4.
второй файл приводить не буду. Если интересно сам посмотришь. Но суть в том что это как раз разреженный массив сделаный с помощью бинарного дерева /src/common/classes/sparce_bitmap.h Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2016, 21:13 |
|
Нарушение уникальности PK
|
|||
---|---|---|---|
#18+
Siemargl, в Firebird битовые карты действительно разрежены. Внутреннее представление основано на b+ дереве, а не на сплошном массиве, если об этом идёт речь. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.03.2016, 21:14 |
|
|
start [/forum/topic.php?fid=40&msg=39198353&tid=1562271]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 279ms |
total: | 445ms |
0 / 0 |