powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Нарушение уникальности PK
25 сообщений из 111, страница 4 из 5
Нарушение уникальности PK
    #39197210
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochне знал...
значит на курсах у меня ты не был. :-)
более того, список номеров записей перед вытаскиванием записей еще и сортируется, чтобы чтение было упорядочено по страницам данных, а не по ключам. Иначе io будет в десятки раз выше. Как например, при "навигации по индексу".
http://ibaseforum.ru/viewtopic.php?f=4&t=4175
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39197214
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

у меня на твоём файле воспроизвелось. По DDL вроде всё нормально. Уж не знаю что там произошло. Странно что
ALTER INDEX ... ACTIVE
COMMIT
действительно не даёт никаких ошибок.
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39197232
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

не был, "раньше котлеты не подгорали" :-)

я уже глянул в dataaccesspaths на эту тему
с неверсионными индексами в целом разумно

но всё же первая мысль "а вот сейчас карта большой таблицы каааак вылезет за пределы оперативки отпущенной серверу" :-)

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

то есть для уникальных индексов Where x=y запрос явно будет дешевле без промежуточного картирования
для неуникальных индексов с хорошей селективностью - тоже

а если отбор ещё условно "для грида" и до конца фетчиться никогда не будет - то держать в память карту просто попусту тратить память :-(
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39197234
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

AS. цикл active->inactive->active тоже ?

у вас там вроде есть инструменты напрямую в fbk-файлах ковыряться?

ещё одна сумасшедшая идея, что изначально ID был другим целым числом, например int16, а не int32, или ещё каким-нибудь numeric/decimal

и поэтому в этих экземплярах записи хотя значения и одно, храниться оно разными битами
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39197240
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

по словам ТСа он даже PK пересоздал. Так что у меня нет даже предположений что случилось.
А копанием во внутренностях я не занимаюсь, не путай меня с kdv.
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39197243
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

Баг подтверждаю, регрессия в 2.5.3 :(

В трекер занесёшь ?

PS 7z сказать где лежит ?
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39197246
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochно всё же первая мысль "а вот сейчас карта большой таблицы каааак вылезет за пределы оперативки отпущенной серверу" :-)

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

то есть для уникальных индексов Where x=y запрос явно будет дешевле без промежуточного картирования


для уникальных индексов и индексов с хорошей селективностью карта большой не будет. Другое дело что будет большое количество выделений и освобождений памяти. Так что для уникальных индексов её действительно дешевле не строить, всё равно уникальный индекс даст не более одной записи, а остальные индексы скорее всего задействованы не будут. А вот насчёт неуникальных с хорошей селективностью вопрос спорный.
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39197257
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladБаг подтверждаю,
баг-то в чем? волшебное значение столбца, для которого может быть создано N ключей (больше 1) в уникальном индексе?
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39197264
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochа вот сейчас карта большой таблицы каааак вылезет за пределы оперативки отпущенной серверу
к примеру, таблица с 2 760 304 951 записей, занимает 249 гиг. Индекс (их много) по одному столбцу, в зависимости от распределения значений - в среднем 100 гиг (от 63 до 122).
Но если в качестве "битовой карты" даже использовать просто массив номеров записей, то Record_count * 8 = 21 гиг. Да, может не влезть. Но как-то никто пока не жаловался. :-)
А для настоящей битовой карты будет Record_count / 8, то есть 329 мб.
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39197280
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.

короче, полная шляпа.
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39197282
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladPolesov,

Баг подтверждаю, регрессия в 2.5.3 :(

В трекер занесёшь ?
А что именно написать? Файл БД надо прикладывать?


P.S. Про то, что файл не сжал - извиняюсь.
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39197301
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladВ трекер занесёшь ?

CORE-5161
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39197314
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

спасибо !
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39197326
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov,

что же ты туда архивированную БД не приложил?
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39197361
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

тест я сейчас сделаю
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39197479
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvА для настоящей битовой карты будет Record_count / 8, то есть 329 мб.

Ну да, и если там реально надо форму заполнить для юзера с 20-40 строками, и 99% что пользователь больше и не будет смотреть, то как ни странно 40 fetch page по памяти бы куда дешевле влезло.

Теперь представить десяток таких пользователей и открытыекурсоры (для тех немногих, кто все же начнет прокручивать грид вниз)....
И на сильно загруженном сервере эта радость начнет весело пейджиться.

вспомнилось, к вопросу об анекдотах, у клиента начались дикие тормоза, вот вообще FB не жил, при том что никаких нехваток ресурсов его процессу не было даже близко. Довольно быстро выяснилось, что всю память загрёб MSI Installer закачавший патчи для MS SQL и терпеливо ждущий перезагрузки. Но тормоза почему-то проявились из всего крутившегося на сервере именно на FB

С памятью кэшей, настраиваемой в firebird.conf битовые карты не пересекаются? а то ещё и кэш вытеснять начнут...
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39197482
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисдля уникальных индексов и индексов с хорошей селективностью карта большой не будет.

почему? размер битовой карты зависит исключительно от "грязного" количества записей в таблице, сами индексы (их характеристики) тут не при чём
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39197485
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

ну Jim вообще в итоге от версионности ушел, точнее решил, что версии нужны только в памяти ,но не на диске
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39197504
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

битовая карта - это разреженный массив битов. В таком массиве неустановленные элементы не хранятся (хотя зависит от реализации).
Если я правильно понял исходники, то для индексов битовая карта объявлена здесь /src/jrd/sbm.h а сам разреженный массив битов здесь /src/common/classes/sparce_bitmap.h
Сама по себе структура очень экономная. И максимум памяти будет занимать только когда ключ будет указывать на все записи, т.е. когда индекс будет иметь отвратительную селективность.

AriochС памятью кэшей, настраиваемой в firebird.conf битовые карты не пересекаются

битовые карты и кэш вещи перпендикулярные
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39198321
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисArioch,

битовая карта - это разреженный массив битов. В таком массиве неустановленные элементы не хранятся (хотя зависит от реализации).
....
Нет. [cencored]
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39198333
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl,

ты не знаешь способы организации разреженных массивов? Вот одна из них http://lord-n.narod.ru/download/books/walla/programming/Spr_po_C/23/2303.htm
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39198334
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Тебе как документописателю недопустимо путать понятия
https://ru.wikipedia.org/wiki/Битовая_карта
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39198347
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl,

вот жеж не верующий. Я тебе даже файлы привел с исходниками

/src/jrd/sbm.h
Код: plaintext
1.
2.
3.
4.
........
// Bitmap of record numbers
typedef Firebird::SparseBitmap<FB_UINT64> RecordBitmap;
............



второй файл приводить не буду. Если интересно сам посмотришь. Но суть в том что это как раз разреженный массив сделаный с помощью бинарного дерева

/src/common/classes/sparce_bitmap.h
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
	
..........
        // Bucket with bits
	struct Bucket
	{
		T start_value; // starting value, BUNCH_BITS-aligned
		BUNCH_T bits;  // bits data
		inline static const T& generate(const void* /*sender*/, const Bucket& i)
		{
			return i.start_value;
		}
	};

	typedef BePlusTree<Bucket, T, MemoryPool, Bucket> BitmapTree;
	typedef typename BitmapTree::Accessor BitmapTreeAccessor;
.........
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39198351
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl,

в Firebird битовые карты действительно разрежены. Внутреннее представление основано на b+ дереве, а не на сплошном массиве, если об этом идёт речь.
...
Рейтинг: 0 / 0
Нарушение уникальности PK
    #39198353
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

да. Именно это я и пытался объяснить
...
Рейтинг: 0 / 0
25 сообщений из 111, страница 4 из 5
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Нарушение уникальности PK
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]