|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
Добрый день Помогите объяснить причину возникновения такой проблемы: В программе есть такой функционал - выделение классификатора товарных карточек для дальнейших действий над ними. В базе это таблица SEL_CLASSIF Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Добавили FK: Код: plaintext 1. 2.
После чего программа стала зависать на выделении классификатора в пиковых нагрузка (100 магазинов в одно время начинают печатать товары с измененными ценами по всему классификатора) + IBExpert зависает при выборке из этой таблице. Таблица SEL_CLASSIF 2 млн. строк, CLASSIF - 6000, SEL_CLASSIF_KIND - 21,USERS - 2725. Может ли наличие FK вызывать такую проблему и почему? Разработчик бьет себя в грудь, что такой проблемы не может быть, а я наблюдаю другое. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 06:20 |
|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
Уточнение до добавления FK таблица sel_classif была 24 млн строк ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 06:23 |
|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
Gallemar, глубину индекса посмотри. если 4 - то аллес. нужно увеличить размер страницы до максимума, если раньше этого не сделал. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 07:57 |
|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
pastorGallemar, глубину индекса посмотри. если 4 - то аллес. нужно увеличить размер страницы до максимума, если раньше этого не сделал. Она уже 16. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 07:59 |
|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
GallemarОна уже 16. как так получилось? какой размер страницы? Количество записей вроде не очень большое. GallemarПосле чего программа стала зависать на выделении классификатора в пиковых нагрузка отсюда не видно как оно делается. Давай запросы и статистику ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 09:11 |
|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
Симонов Денис, размер страницы 16. SEL_CLASSIF (1320) Index FK_SEL_CLASSIF_CLASSIF (3) Depth: 2, leaf buckets: 1089, nodes: 2754638 Average data length: 0.00, total dup: 2750682, max dup: 768 Fill distribution: 0 - 19% = 0 20 - 39% = 0 40 - 59% = 95 60 - 79% = 430 80 - 99% = 564 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 09:23 |
|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
Gallemar, а ну тогда ладно, а то я уже было подумал что глубина индекса. Таки жду пояснений что там тормозит и при какой конкретно выборке зависает IBE ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 09:26 |
|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
Симонов ДенисGallemar, а ну тогда ладно, а то я уже было подумал что глубина индекса. Таки жду пояснений что там тормозит и при какой конкретно выборке зависает IBE Таки просто грид открываю и.... всё. IBE в задумчивости. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 09:27 |
|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
Причем такое только в моменты,когда все дергают этот функционал. Потом вполне себе работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 09:29 |
|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
Gallemar, а это ты просто просмотр данных в таблице делаешь? Попробуй простой запрос, IBE вроде для просмотра таблиц неявно дописывает ORDER BY <PK>, что может сыграть злую шутку. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 09:32 |
|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
Gallemar, у тебя там случайно этот механизм транзакцию с резервированием таблиц не использует? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 09:33 |
|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
Симонов ДенисGallemar, IBE вроде для просмотра таблиц неявно дописывает ORDER BY <PK>, что может сыграть злую шутку. На...я? зачем???? У меня по несколько млн строк в таблицах ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 09:35 |
|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
Симонов ДенисGallemar, у тебя там случайно этот механизм транзакцию с резервированием таблиц не использует? Хм. Не знаю. У меня только база есть, не моя программа. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 09:36 |
|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
GallemarТаблица SEL_CLASSIF 2 млн. строк Gallemarдо добавления FK таблица sel_classif была 24 млн строк Т.е. 22 млн удалили ? И теперь оно с кучей индексов пытается собрать мусор ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 09:38 |
|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
hvladGallemarТаблица SEL_CLASSIF 2 млн. строк Gallemarдо добавления FK таблица sel_classif была 24 млн строк Т.е. 22 млн удалили ? И теперь оно с кучей индексов пытается собрать мусор ? Удаляли две недели назад, к тому же у меня каждый день делается gbak, он же должен был в любом случае мусор собрать. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 09:41 |
|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
GallemarСимонов ДенисGallemar, IBE вроде для просмотра таблиц неявно дописывает ORDER BY <PK>, что может сыграть злую шутку. На...я? зачем???? У меня по несколько млн строк в таблицах когда PK является простым автоинкрементом это не страшно. Кстати где-то это можно отключить. Проверь трейсом. Я сейчас глянул у себя и увидел, что именно так и происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 09:43 |
|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
Симонов Денис когда PK является простым автоинкрементом это не страшно. А если как у меня - ПК составной из трех полей? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 09:47 |
|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
Gallemar, я видел какой у тебя ПК. На IBE такой случай не проверял ибо в моей базе составные ПК отсутствуют совсем. Но ты же можешь проверить трейсом или даже мониторингом что делается в твоём случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 09:49 |
|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
Симонов Денис, сейчас посмотрю. А вообще такие зависания только в определенное время происходят. В другое - проблем нет. Сейчас выполнил запрос и пошарился по гриду в IBE select * from sel_classif where id_user = 80 План PLAN (SEL_CLASSIF INDEX (PK_SEL_CLASSIF)) ------ Информация о производительности ------ Время подготовки запроса = 16ms Время выполнения запроса = 109ms Среднее время на получение одной записи = 0,03 ms Current memory = 27 646 816 Max memory = 44 539 272 Memory buffers = 1 500 Reads from disk to cache = 4 Writes from cache to disk = 0 Чтений из кэша = 7 943 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 09:53 |
|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
GallemarУдаляли две недели назад, к тому же у меня каждый день делается gbak, он же должен был в любом случае мусор собрать.У тебя gbak мусор собирает ??? Не свип ??? 1. gstat -t SEL_CLASSI -r даст ответ на вопрос о мусоре в этой таблице 2. статистика выполнения любого тормозящего селекта тоже даст ответ на вопрос о мусоре в этой таблице Далее. Что было сначала - массовое удаление или создание ФК ? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 09:55 |
|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
hvladGallemarУдаляли две недели назад, к тому же у меня каждый день делается gbak, он же должен был в любом случае мусор собрать.У тебя gbak мусор собирает ??? Не свип ??? 1. gstat -t SEL_CLASSI -r даст ответ на вопрос о мусоре в этой таблице 2. статистика выполнения любого тормозящего селекта тоже даст ответ на вопрос о мусоре в этой таблице Далее. Что было сначала - массовое удаление или создание ФК ? Каждый день sweep, set statistic, nbackup, gbak. Так что мусор точно собран. 1. На текущий момент Analyzing database pages ... SEL_CLASSIF (1320) Primary pointer page: 2853, Index root page: 2854 Average record length: 1.54, total records: 2745434 Average version length: 16.97, total versions: 2495629, max versions: 1 Data pages: 9961, data page slots: 10267, average fill: 83% Fill distribution: 0 - 19% = 167 20 - 39% = 131 40 - 59% = 527 60 - 79% = 407 80 - 99% = 8729 Index FK_SEL_CLASSIF_CLASSIF (3) Depth: 2, leaf buckets: 1089, nodes: 2745442 Average data length: 0.00, total dup: 2741486, max dup: 764 Fill distribution: 0 - 19% = 0 20 - 39% = 0 40 - 59% = 95 60 - 79% = 442 80 - 99% = 552 Index PK_SEL_CLASSIF (0) Depth: 3, leaf buckets: 2041, nodes: 2745434 Average data length: 1.05, total dup: 203639, max dup: 3 Fill distribution: 0 - 19% = 2 20 - 39% = 550 40 - 59% = 1049 60 - 79% = 251 80 - 99% = 189 2. Тормозящий селект только завтра смогу сделать. Сначала удаление, потом создание FK ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 10:06 |
|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
Gallemar, ага, мусора нет, версий нет .... total records: 2745434 total versions: 2495629, max versions: 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 10:39 |
|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
kdv, ну, не 22 млн :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 10:41 |
|
Проблемы с таблицей после добавления FK
|
|||
---|---|---|---|
#18+
kdvGallemar, ага, мусора нет, версий нет .... total records: 2745434 total versions: 2495629, max versions: 1 Ну это уже после того как пользователи поработали Вообще у нас на пике 100 с лишним усеров, каждый в таблицу вставляет по 4000 тысячи строк за раз. И всё это почти в одно время. Просто без FK такого не было. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2016, 10:47 |
|
|
start [/forum/topic.php?fid=40&msg=39317592&tid=1561951]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 269ms |
total: | 426ms |
0 / 0 |