powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Долгая обработка запроса SELECT
25 сообщений из 38, страница 1 из 2
Долгая обработка запроса SELECT
    #39427484
Dokimos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть БД на Firebird 2.5 SuperClassic. Запросы из самых больших таблиц базы обрабатываются 10-15 секунд (количество записей в таблице 800 000). В conf увеличил количество кешируемых страниц до 100 000, и всё равно то же самое...
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427486
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dokimos,

Ты надеешься что тут собрались владельцы исключительно сильных хрустальных шаров которые усилием мысли определят:

структуру твоих таблиц

твои запросы

планы твоих запросов?

Огорчу. Таких хрустальных шаров нет в продаже.
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427487
Dokimos,

о структуре таблиц, схеме их индексации и тексте запроса предлагается догадаться? кроме того, когда речь идет о "долгой обработке запроса", то ещё и план выполнения не помешает. без этого - никто тебе ничего не посоветует (ну, разве только, сменить профессию, или укажут на классическую ошибку в 17-й строке, при правильном ответе - 42).
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427493
Dokimos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Структура на скрине, выполняю запрос select * from REESTR3 where ID_ADRESS=4242

Модератор: Вложение удалено.

Модератор: Вложение удалено.

Модератор: Вложение удалено.
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427501
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dokimos,

за структуру выложенную скриншотами топик и грохнуть могут. Скрипт создания таблицы можно скопировать со вкладке DDL.

PS. Похоже совет о смене профессии был правильным.
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427505
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dokimosselect * from REESTR3 where ID_ADRESS=4242

этот запрос может тормозить только из=за отсутствия индекса на ID_ADRESS. И ещё неужто требуются все 89 полей?
Структура таблицы полный отстой.
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427510
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dokimos,

Вместо скриншотов с вкладки Fields нужно было скопировать весь текст с вкладки "DDL" - там все гораздо понятнее + там есть информация о ключах и индексах, которой для ответа на вопрос и не хватает.
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427513
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DokimosА всё, процедуры ж надо было юзать...

И при чем тут процедуры?
От запихивания этого запроса в процедуру его суть никак не поменяется.
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427519
Dokimos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
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.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
/******************************************************************************/
/***               Generated by IBExpert 27.03.2017 14:22:44                ***/
/******************************************************************************/

/******************************************************************************/
/***      Following SET SQL DIALECT is just for the Database Comparer       ***/
/******************************************************************************/
SET SQL DIALECT 3;



/******************************************************************************/
/***                                 Tables                                 ***/
/******************************************************************************/



CREATE TABLE REESTR3 (
    ID_REESTR3                    INTEGER,
    ID_S_ED_IZM                   INTEGER,
    PHY_ID_PHYS_PERSON            INTEGER,
    ID_BRANCH_ENTERPRISE          INTEGER,
    ID_SP_KOD3                    INTEGER,
    EMP_ID_EMPLOYEE2              INTEGER,
    JUR_ID_JUR_PERSON             INTEGER,
    ID_S_OTDEL                    INTEGER,
    HAR_REESTR3                   DOUBLE PRECISION,
    S_NAME_S_ED_IZM               VARCHAR(10),
    KOD_V3_SP_KOD                 VARCHAR(20),
    VID_S_REESTR3                 VARCHAR(80),
    V_PRAVA_REESTR3               VARCHAR(80),
    SUB_V_PRAV_REESTR3            VARCHAR(512),
    V_LAST_NAME_EMPLOYEE          VARCHAR(80),
    ID_KADASTR                    INTEGER,
    ID_JUR_PERSON                 INTEGER,
    ID_NAME_OBJEKT                INTEGER,
    ID_PHYS_PERSON                INTEGER,
    ID_EMPLOYEE                   INTEGER,
    ID_JOB_TITLE                  INTEGER,
    EMP_ID_EMPLOYEE               INTEGER,
    DATA_Z_REESTR3                DATE,
    NOMER_R_REESTR3               INTEGER,
    NOMER_CH_R_REESTR3            INTEGER,
    NOMER_REESTR_REESTR3          INTEGER,
    ZEM_KADASTR                   VARCHAR(80),
    INV_NOMER_KADASTR             INTEGER,
    LITER_KADASTR                 VARCHAR(80),
    POM_KADASTR                   VARCHAR(31),
    ADRES_REESTR3                 VARCHAR(512),
    NAME_NAME_OBJEKT              VARCHAR(255),
    SUB_S_PRAV_REESTR3            VARCHAR(512),
    DATA_ISK_REESTR3              DATE,
    SL_NOMER_REESTR3              VARCHAR(255),
    LAST_NAME_EMPLOYEE            VARCHAR(80),
    PRIM_REESTR3                  VARCHAR(5000),
    ID_ADRESS                     INTEGER,
    TYPE_OBJEKT                   VARCHAR(80),
    ID_TYPE_OBJEKT                INTEGER,
    DOLI                          VARCHAR(20),
    ARCHIV                        VARCHAR(2),
    OLD_ID                        INTEGER,
    ID_PRAVA                      INTEGER,
    ID_PROBLADATEL                INTEGER,
    NAME_PROBLADATEL              INTEGER,
    VID_REG                       INTEGER,
    ID_FIZLICA                    INTEGER,
    ID_JURLICA                    INTEGER,
    SL_NOMER_TMP                  VARCHAR(255),
    ID_ADMINISTRATIVE_AREA        INTEGER,
    ID_SUBJECT_RF                 INTEGER,
    ID_JUR_PERSON_SOT             INTEGER,
    ID_TYPE_ELEMENT_ADDRESS       INTEGER,
    ID_SETTLEMENT                 INTEGER,
    TYP_ID_TYPE_ELEMENT_ADDRESS   INTEGER,
    ID_STREET                     INTEGER,
    ID_TYPE_POM                   INTEGER,
    ID_MUNICIPAL_FORMATION        INTEGER,
    TYP_ID_TYPE_ELEMENT_ADDRESS2  INTEGER,
    NAME_SUBJECT_RF               VARCHAR(80),
    P_INDEX                       VARCHAR(10),
    NAME_MUNICIPAL_FORMATION      VARCHAR(80),
    NAME_ADMINISTRATIVE_AREA      VARCHAR(80),
    UDS_MUNICIPAL_FORMATION       VARCHAR(80),
    UDS_NAME_SETTLEMENT           VARCHAR(80),
    NAME_SETTLEMENT               VARCHAR(80),
    DOS_STREET                    INTEGER,
    UDS_STREET                    VARCHAR(80),
    P_STREET                      INTEGER,
    NAME_STREET                   VARCHAR(80),
    NUMBER_SITE_STREET            VARCHAR(20),
    BORDER_STREET                 VARCHAR(20),
    KLADR_STREET                  VARCHAR(20),
    SOT_ADRESS                    VARCHAR(80),
    U_SOT_ADRESS                  INTEGER,
    DOM_ADRESS                    VARCHAR(20),
    SOOR_ADRESS                   VARCHAR(20),
    KORPUS_ADRESS                 VARCHAR(20),
    STROEN_ADRESS                 VARCHAR(20),
    POM_ADRESS                    VARCHAR(20),
    KOM_ADRESS                    VARCHAR(20),
    DOM                           DOUBLE PRECISION,
    SOOR                          DOUBLE PRECISION,
    KORPUS                        DOUBLE PRECISION,
    STROEN                        DOUBLE PRECISION,
    POM                           DOUBLE PRECISION,
    KOM                           DOUBLE PRECISION,
    S_ADRESS                      VARCHAR(512)
);




/******************************************************************************/
/***                               Privileges                               ***/
/******************************************************************************/



Знаю что структура отстойная, работаю с тем что дали. И да, поля нужны все
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427528
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dokimos, под кат прячь свои портянки

CREATE INDEX REESTR3_IDX1 ON REESTR3 (ID_ADRESS)

простой индекс, примени и проверь запрос
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427553
Dokimos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gallemar, теперь на самом сервере выполняется быстро, но со стороны клиента, так же долго.
У клиента стоит программа, написана на Delphi. К базе подключается через ODBC драйвер.
В самой программе всё просто, ADOConnection использует ODBC, команды выполняются через ADOQuery.

ADOQuery1.SQL.Text:=('select * from REESTR3 where ID_ADRESS=4242');
ADOQuery1.Active:=TRUE;
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427556
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dokimos, выполни на сервере запрос select count(*) from REESTR3 where ID_ADRESS=4242 и покажи сколько насчитает
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427561
Dokimos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gallemar, COUNT 6

------ Performance info ------
Prepare time = 0ms
Execute time = 0ms
Avg fetch time = 0,00 ms
Current memory = 2 505 752
Max memory = 2 758 208
Memory buffers = 384
Reads from disk to cache = 180
Writes from cache to disk = 0
Fetches from cache = 1 578
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427565
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dokimos В conf увеличил количество кешируемых страниц до 100 000, и всё равно то же самое...
Что именно менял и на сколько?
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427568
Dokimos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gallemar, DefaultDbCachePages сейчас вообще 2000000 стоит
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427573
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DokimosGallemar, DefaultDbCachePages сейчас вообще 2000000 стоит
Нахера Зачем столько?
Я не память не помню сколько надо СуперКлассику, может меня поправят, но тебе требуется в сотни раз меньше.
Сколько коннектов к базе обычно?
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427574
Dokimos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gallemar, человек 30-40. Знаю что много XD. Просто попробовал
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427575
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarСколько коннектов к базе обычно?ставлю 5 копеек на 3 штуки: 1 из эксперта, 1 из дельфи, 1 из запущенной приклады на дельфи. :)

Скриншоты грохнул, пример как оформлять свои портянки кода выше сделал. Дальше самостоятельно, пожалуйста.
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427576
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DokimosЗнаю что много XD.много чего?
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427580
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DokimosGallemar, человек 30-40. Знаю что много XD. Просто попробовал
Так надо пробовать с пониманием
Вот тут оптимизированные конфиги http://ib-aid.com/ru/optimized-firebird-configuration/
больше ничего не крутил? Например, TempBlockSize ?

Вообще по ADO лучше в другую ветку, тут Delphi никто не знает.
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427586
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DokimosGallemar, DefaultDbCachePages сейчас вообще 2000000 стоит

Т.е у тебя на сервере есть 2000000 * 8 кб * 30-40 коннектов = 610 ГигаБайт памяти есть?
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427588
Dokimos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gallemar, конфиг оттуда и стоит, просто одно значение пробовал менять
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427593
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DokimosGallemar, конфиг оттуда и стоит, просто одно значение пробовал менять
не надо менять,если не знаешь зачем оно. Есть хорошая документация у red soft, с описанием каждого параметра.
Или вот ещё, минимум:
Описание параметров сервера Firebird ("C:\Program Files\Firebird\Firebird_2_5\firebird.conf")
DefaultDbCachePages - кол-во страниц кэша на каждый коннект, ставить не меньше 2048.
FileSystemCacheSize - максимальный размер оперативной памяти, используемый системным файловым кешем, в %,40%, смотреть по свободной памяти.
LockMemSize - кол-во байт для менеджера блокировок, ставить не меньше 6400000
LockHashSlots - ширина хэш таблицы, только простые числа!!!!!,ставить не меньше 10007
TempCacheLimit - размер временных файлов C:\Windows\Temp.
TempDirectories - путь к временным файлам,ставить на быстрый массив!!!
MaxUserTraceLogSize - максимальный размер файла трассировки
ConnectionTimeout - время ожидания ответа клиента

Изменения проводить:
При остановленном сервере, изменения применятся только при старте.
Резко значения за раз не увеличивать, возможна резкая просадка производительности.
Предварительно прочитать "Помилуй мя Господи"
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427599
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DokimosЗнаю что структура отстойная, работаю с тем что дали. И да, поля нужны все

Структуры пока-что никакой не видно, только плоская таблица :)
Однако полное отсутствие индексов и даже первичного ключа приводит к мысли что... собственно при такой широкой записи с кучей varchar полей при количестве записей под миллион поиск натуралом (т.е. без индексов) вполне может идти по 10 секунд. Ибо параметров тачки нам тут тоже никто не озвучил.
...
Рейтинг: 0 / 0
Долгая обработка запроса SELECT
    #39427605
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GallemarЕсть хорошая документация у red soft, с описанием каждого параметра.


Если есть ссылка на эту доку - поделитесь :)
...
Рейтинг: 0 / 0
25 сообщений из 38, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Долгая обработка запроса SELECT
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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