powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Кэш препаренных запросов
23 сообщений из 23, страница 1 из 1
Кэш препаренных запросов
    #38939361
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто знает, кэширует ли файр препаренные запросы если идут интенсивные аналогичные запросы с разных соединений?
Чтоб не тратить время на препэйр. В классике врядли, а как в супере?
...
Рейтинг: 0 / 0
Кэш препаренных запросов
    #38939390
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin Marcoci,

то же нет. В FB время Prepare ничтожно по сравнению со временем выполнения запроса. Да и кешировать план не всегда хорошо. Самый главный вопрос в том когда этот план должен быть выкинут из кеша.
...
Рейтинг: 0 / 0
Кэш препаренных запросов
    #38939398
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисто же нет.
ЕМНИП, Адриано сделал это в тройке.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кэш препаренных запросов
    #38939406
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот у нас сервис, например где будут много однородных простых "онлайн, рид-онли" запросов.
Если их будут порядка 200-500/сек то для каждого по 15-20мс накапливается :)
Ладно, забили :)
...
Рейтинг: 0 / 0
Кэш препаренных запросов
    #38939410
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Симонов Денис!
You wrote on 17 апреля 2015 г. 15:49:44:

Симонов ДенисВ FB время Prepare ничтожно по сравнению со временем выполнения
запроса.очень смелое (своей глобальностью) утверждение

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кэш препаренных запросов
    #38939432
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

ну вообще медленный prepare бывает:

1. Слишком сложный многоэтажный запрос. Тут пофиг SS/CS
2. Запрос содержащий ХП. Но ХП грузится в кэш при первом обращении. А запрос в целом всё равно препарится. Для SS кэш для процедур вроде общий.
3. Миллиардные таблицы даже с индексом. Но там их PP тоже попадает в страничный кэш при первом вызове. В SS страничный кэш общий, так что в других коннектах должно быть быстрее.
...
Рейтинг: 0 / 0
Кэш препаренных запросов
    #38939463
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin MarcociВот у нас сервис, например где будут много однородных простых "онлайн, рид-онли" запросов.
Если их будут порядка 200-500/сек то для каждого по 15-20мс накапливается :)Ну так и кешируйте их в коннектах сервиса. Про пул коннектов рассказать ? :)
...
Рейтинг: 0 / 0
Кэш препаренных запросов
    #38939494
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ой, там сокеты, паралельные потоки и подключения из каждого thread-a напрямую к серверу
хочется уже чтоб было на стороне сервера, чем еще один этаж изобретать :)
...
Рейтинг: 0 / 0
Кэш препаренных запросов
    #38939498
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin Marcoci,

на чём сервис пишется? Во многих драйверах доступа есть поддержка пула коннектов
...
Рейтинг: 0 / 0
Кэш препаренных запросов
    #38939502
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin Marcociдля каждого по 15-20мс накапливается
Почему ты думаешь, что они не сумеют распараллелиться?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кэш препаренных запросов
    #38939520
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

На Lazarus-e, там нашел очень лайтовую либу, прямые api вызовы к серверу.
https://github.com/graemeg/firebird-lib

Dimitry Sibiryakov, распараллелються, но думал вот бы круто было чтоб не держать долго клиента.
Там из каждого фрида Connect, Запрос, Результат, Bye bye. Никаких долгих танцев.
...
Рейтинг: 0 / 0
Кэш препаренных запросов
    #38939531
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin Marcoci,

ты на самих коннектах/дисконнектах больше времени потеряешь чем на prepare
...
Рейтинг: 0 / 0
Кэш препаренных запросов
    #38939536
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисты на самих коннектах/дисконнектах больше времени потеряешь чем на
prepare
А при коннекте по TCP он ещё получит исчерпание пула портов и введёт в ступор ОСь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кэш препаренных запросов
    #38939540
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так один коннект из разных thread-ax использовать тоже нельзя, пока так работает.
...
Рейтинг: 0 / 0
Кэш препаренных запросов
    #38939542
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovА при коннекте по TCP он ещё получит исчерпание пула портов и введёт в ступор ОСь.

Так как же апач, и другие сервары работают?
Пока небыло переполнение пула, хотя еще мы не в продакшине.
...
Рейтинг: 0 / 0
Кэш препаренных запросов
    #38939543
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin Marcociодин коннект из разных thread-ax использовать тоже нельзя
Одновременно - нельзя. Последовательно - можно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кэш препаренных запросов
    #38939548
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin Marcoci,

ты смысла пула не понимаешь. Это не значит что всего один коннект. Алгоритм примерно такой. Приходит новый запрос. Смотрим есть в пуле свободный коннект, если есть берём его, если нет создаём новый. Поработали с коннектом и не уничтожили его сразу а положили обратно в пул, авось кому потребуется. Обычно ещё у самого коннекта устанавливается время в течении которого если никто не воспользовался коннектом он умирает. Но пул конечно надо программировать.
...
Рейтинг: 0 / 0
Кэш препаренных запросов
    #38939552
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin MarcociТак как же апач, и другие сервары работают?
На входящие соединения используется один порт.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кэш препаренных запросов
    #38939553
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OK, спасибо за наводку, буду строить пул коннектов, должно сократить время в разы.
Думаю несложно будет. TThreadList со списком свободных и гоу.
...
Рейтинг: 0 / 0
Кэш препаренных запросов
    #38939554
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНа входящие соединения используется один порт.

Так и у файра тоже (3050), и у моего сервиса тоже.
...
Рейтинг: 0 / 0
Кэш препаренных запросов
    #38939562
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Дениспул конечно надо программировать.
Да, это же чертовски сложно... Кода аж целых 15 строчек.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Кэш препаренных запросов
    #38939566
Dorin Marcoci
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну... можно пофантазировать, с garbage collector-ом, каждые 10мин чтоб убить излишки, критикал секции, итп...
Хотя если постаратся, может и в 15 строк получится...
...
Рейтинг: 0 / 0
Кэш препаренных запросов
    #38939581
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dorin MarcociХотя если постаратся, может и в 15 строк получится...
Нужно постараться чтобы получилось больше. Считай:

В процедуре коннекта:
1. Захватить мутекс
2. Получить коннект из списка
3. Освободить мутекс
4. Проверить полученный коннект
5. Если он пуст (список был пуст) - установить новый
6. Вернуть коннект

В процедуре дисконнекта:
7. Захватить мутекс
8. Засунуть коннект в список
9. Освободить мутекс

Всё. Оставшиеся шесть строчек можешь потратить на проверку размера списка в процедуре
дисконнекта и освобождение "лишнего" коннекта. Что, впрочем, займёт только две из них. Ещё
четыре, стало быть, будут комментариями.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Кэш препаренных запросов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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