Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
чччДТаким способом ты отключил использование "плохого" индекса по station_id . . Эээ... а можно для нубов: чем он плохой и как вообще определить что индекс - плохой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2017, 20:19 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
alekcvp, "плохой" индекс - индекс с плохой избирательностью (селективностью), т.е. большим количеством дубликатов ключей. Классический пример - в таблице 1000 записей, по столбцу построен индекс, в столбце 2 значения (м и ж, 1 и 2, и т.д.). Одно значение ключа - 990 записей, другое - 10. Поиск по первому значению приводит к чтению почти всех страниц с диска, т.е. к лишним операциям ввода-вывода, т.к. все равно выберется 990 записей (почти все). Поиск на второе значение - очень выгоден, т.к. выберет всего 10 записей. Но оптимизатор не знает, поиск какого значения будет производиться, поэтому индекс в плане скорее всего будет использоваться. Так что тут все зависит от ситуации, поиск каких значений идет по индексу, и сколько их. Еще "качество" индекса, если он по нескольким столбцам, зависит от порядка столбцов в индексе, и их селективности. В общем, создавать индексы вручную (кроме ПК и ФК) нужно только если они явно ускоряют производительность конкретного запроса. Бывает что разработчик наоборот, сначала нафигачит индексов на все случаи жизни, а потом удивляется почему "убирание" индекса ускоряет запрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2017, 20:28 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
Ага, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2017, 21:38 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
kdvРоман ЯнковскийЧто значит х.з.? Чтобы сортировать по полю нужно обязательно добавлять его в select? Это какие-то новости sql? я понимаю, что бывает всякая специфика, и конкретная реализация SQL не запрещает, но вот например - вижу я в результате запроса фамилии людей. Которые идут в каком-то порядке. Каком - я не вижу. А они - сюрприз! - отсортированы по номеру паспорта. Или по дате рождения. То есть, оценить, по какому критерию конкретные записи идут одна за другой, я не могу. Этот конкретный запрос используется в хранимой процедуре, где важно обрабатывать записи в хронологическом порядке. При этом сама дата не важна. Только порядок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2017, 22:48 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
Я так и подумал сначала, что этот трюк отключает индекс. Но потом я вообще задисейблил этот индекс и быстрее не стало. Поэтому засомневался. А потом уже после того как запостил вопрос, увидел, что на это поле есть еще и внешний ключ и в когда я дисейблю индекс, в план попадает он. Индекс я прибить могу, нафиг он нужен, а вот внешний ключ отключать стремно как-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2017, 22:55 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
kdvalekcvp, "плохой" индекс - индекс с плохой избирательностью (селективностью), т.е. большим количеством дубликатов ключей. Классический пример - в таблице 1000 записей, по столбцу построен индекс, в столбце 2 значения (м и ж, 1 и 2, и т.д.). Одно значение ключа - 990 записей, другое - 10. Поиск по первому значению приводит к чтению почти всех страниц с диска, т.е. к лишним операциям ввода-вывода, т.к. все равно выберется 990 записей (почти все). Поиск на второе значение - очень выгоден, т.к. выберет всего 10 записей. Но оптимизатор не знает, поиск какого значения будет производиться, поэтому индекс в плане скорее всего будет использоваться. Так что тут все зависит от ситуации, поиск каких значений идет по индексу, и сколько их.. Это кстати не объясняет почему с индексом значительно медленнее, чем без индекса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2017, 00:50 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
Роман ЯнковскийIvan_Pisarevskyпропущено... напиши and i.station_id+0 = 50 Стало выполнятся за 0.05сек. Это что за магия такая? :) Это отсутствие реального оптимизатора в ФБ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2017, 00:53 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
Сделал индекс по двум полям, нормально стало. Спасибо огромное! Но это не объясняет мое изначальное недоумение. Ну допустим запрос плохой и индексы не те. Так пусть файрберд жрет ресурсы, чтоб его выполнить. Эти таблицы все целиком 20 раз в память поместятся, оно тупым перебором должно было быстрее работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2017, 01:01 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
На всякий случай еще старую медленную статистику запосчу. Завтра. Извиняюсь за много постов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2017, 01:03 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
И еще. Такое вот: Код: sql 1. 2. 3. 4. 5. > 1080 Код: sql 1. 2. 3. 4. 5. > 20964 Точно-точно у индекса по select_id плохая селективность? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2017, 04:16 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
Роман ЯнковскийТочно-точно у индекса по select_id плохая селективность?Планы и статистику выполнения мы увидим ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2017, 10:05 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
Роман ЯнковскийНу допустим запрос плохой и индексы не те. Так пусть файрберд жрет ресурсы, чтоб его выполнить. Эти таблицы все целиком 20 раз в память поместятся, оно тупым перебором должно было быстрее работать. Ты всерьез полагаешь, что он с диска каждый раз нужную страницу читает, потому медленно работает ? Сдается мне, что к моменту выполнения самого запроса сколько можно страниц уже прочитано или они читаются по мере надобности и толку от того, что они будут прочитаны заранее будет немного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2017, 10:38 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
Роман ЯнковскийТак пусть файрберд жрет ресурсы, чтоб его выполнить. судя по этой фразе, вы не читали статью про железо и фб, которую я вам дал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2017, 11:35 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
С SET PLAN ON/SET STATS ON в ISQL получил такие вещи. Отключил новый индекс по двум полям для наглядности. План (который в принципе уже был в начале): PLAN JOIN (E ORDER I_STS_AVAILABILITY_HIST_EN_IDX1 INDEX (I_STS_AVAIL_HIST_ENTRY_I2), I INDEX (FK_STS_AVAILAB_STS_AVAILAB, FK_STS_AVAILABI_STA_STATION)) Статистика: Current memory = 453891000 Delta memory = 3899800 Max memory = 992638888 Elapsed time= 2.842 sec Buffers = 50000 Reads = 39023 Writes = 313 Fetches = 664352 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2017, 11:47 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
То же самое с включенным индексом по двум полям. Current memory = 456675728 Delta memory = 6607232 Max memory = 992638888 Elapsed time= 1.250 sec Buffers = 50000 Reads = 13818 Writes = 184 Fetches = 337405 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2017, 12:02 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
Роман ЯнковскийBuffers = 50000 Reads = 13818 если суперсервер, и 3.0, то можно увеличивать кэш до 200000 тысяч, только тогда надо не забыть и FileSystemCacheThreshold тогда увеличить, например до 300к. база какого размера, какой размер страницы, и сколько RAM на сервере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2017, 12:15 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
Роман ЯнковскийТо же самое с включенным индексом по двум полям.Ты серьёзно считаешь, что кто-то стоит у тебя за спиной и видит эти индексы и поля ? И где план запроса ? Кроме того, желательно показывать детальную (потабличную) статистику выполнения, IBE в помощь. И DDL всех затронутых объектов (таблиц и индексов). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2017, 13:47 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
kdvесли суперсервер, и 3.0, то можно увеличивать кэш до 200000 тысячЗачем ? Reads и так меньше Buffers, там всё и так попадает в кеш. Есс-но, не до первого выполнения запроса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2017, 13:48 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
hvlad, reads - это то что не влезло в кэш. Если бы оно влезало, reads было бы 0, при повторном выполнении запроса, разумеется. Но вероятно, раз приведены "с индексом и без", то скорее всего запросы можно считать повторными, и видимо, не влезает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2017, 15:37 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
hvladРоман ЯнковскийТо же самое с включенным индексом по двум полям.Ты серьёзно считаешь, что кто-то стоит у тебя за спиной и видит эти индексы и поля ? Я считаю, что отвечающие читали тему. Мне предложили сделать индекс по условию соединения и я его сделал. hvladИ где план запроса ? Не будет плана запроса. Третий раз его постить наверно уже лишнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2017, 16:47 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
kdv, спасибо, попробую сегодня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2017, 16:47 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
[quot kdv]Роман Янковскийбаза какого размера, какой размер страницы, и сколько RAM на сервере? база 7.5гб (хм, подросла с тех пор, как я в последний раз смотрел, но ram можно увеличить, если это поможет) ram 16gb страница 8192 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2017, 17:02 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
Роман ЯнковскийНе будет плана запроса. Третий раз его постить наверно уже лишнее.Весьма глупое поведение. Мне эти планы, наверное, не очень нужны, так что я как-нибудь переживу этот отказ :) Подскажу: у запросов с и без использования индексов разные планы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2017, 17:22 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
kdvreads - это то что не влезло в кэшСерьёзно ? :) kdvскорее всего запросы можно считать повторнымиСлишком много предположений и слишком мало надежды получить минимально необходимую инф-цию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2017, 17:24 |
|
||
|
Использование памяти
|
|||
|---|---|---|---|
|
#18+
Роман Янковскийбаза 7.5гб (хм, подросла с тех пор, как я в последний раз смотрел, но ram можно увеличить, если это поможет) статью читайте же. Если база 7 гиг, а памяти 16, вероятно что база уже в памяти. RAMMAP это показывает (на двух последних закладках). Понятно, что смотреть надо при интенсивной работе, а не при выполнении одного тестового запроса. Дальше, при странице 8к и 50000 страниц кэша кэш получается 400 мегабайт. Так что его можно спокойно увеличить раза в 4, как я и предложил (если ФБ 64битный. Если 32битный, то лучше не надо). Потом, во время работы вы можете посмотреть, сколько занимает процесс firebird.exe. Вы же не написали - сколько. Вы сообщили "использует память очень экономично". И 7 гиг 3 раза в 16 гиг не влезет. Влезет только 2 раза. В общем, читайте статью и настраивайте. Там все есть - и рекомендации, и формулы, надо только прочитать внимательно :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2017, 17:28 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=39473459&tid=1561529]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 285ms |
| total: | 431ms |

| 0 / 0 |
