Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
разное время выполнения запроса, как понять?
|
|||
|---|---|---|---|
|
#18+
есть большая таблица - около 10 млн записей, в ней три Full-text поля-вектора. Делаю запрос: select * from xprop where xstring_vector @@ to_tsquery('default','mansur & haber') limit 100; ------- 3 минуты тут же второй раз: select * from xprop where xstring_vector @@ to_tsquery('default','mansur & haber') limit 100; 2 секунды. ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2007, 17:11 |
|
||
|
разное время выполнения запроса, как понять?
|
|||
|---|---|---|---|
|
#18+
вот план после второго выполнения: explain select * from xprop where xstring_vector @@ to_tsquery('default','mansur & haber') limit 100; QUERY PLAN ----------------------------------------------------------------------------------------- Limit (cost=0.00..404.21 rows=100 width=1659) -> Index Scan using xstring_idx on xprop (cost=0.00..24656.94 rows=6100 width=1659) Index Cond: (xstring_vector @@ '''mansur'' & ''haber'''::tsquery) Filter: (xstring_vector @@ '''mansur'' & ''haber'''::tsquery) (4 rows) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2007, 17:13 |
|
||
|
разное время выполнения запроса, как понять?
|
|||
|---|---|---|---|
|
#18+
Winnipuhесть большая таблица - около 10 млн записей, в ней три Full-text поля-вектора. Делаю запрос: select * from xprop where xstring_vector @@ to_tsquery('default','mansur & haber') limit 100; ------- 3 минуты тут же второй раз: select * from xprop where xstring_vector @@ to_tsquery('default','mansur & haber') limit 100; 2 секунды. ?? Данные после первого запроса поднимаются либо в дисковый кеш операционной системы, либо, если позволяют размеры, в разделяемую память (shared_buffers). Поэтому при втором запуске запроса не требуется чтения с физического носителя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 00:01 |
|
||
|
разное время выполнения запроса, как понять?
|
|||
|---|---|---|---|
|
#18+
iz Winnipuhесть большая таблица - около 10 млн записей, в ней три Full-text поля-вектора. Делаю запрос: select * from xprop where xstring_vector @@ to_tsquery('default','mansur & haber') limit 100; ------- 3 минуты тут же второй раз: select * from xprop where xstring_vector @@ to_tsquery('default','mansur & haber') limit 100; 2 секунды. ?? Данные после первого запроса поднимаются либо в дисковый кеш операционной системы, либо, если позволяют размеры, в разделяемую память (shared_buffers). Поэтому при втором запуске запроса не требуется чтения с физического носителя. Во как, интересно. это именно для этого запроса? а сколько времени результат будет храниться и выбираться из кеша? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 10:03 |
|
||
|
разное время выполнения запроса, как понять?
|
|||
|---|---|---|---|
|
#18+
Winnipuh Во как, интересно. это именно для этого запроса? а сколько времени результат будет храниться и выбираться из кеша? 1. Для любых запросов 2. ИМХО до тех пор пока не выбьется из него другими. Из кеша ОС - согласно политики кеша ОС, из шаред_буферов - согласно алгоритмам PG. Про алгоритмы PG вроде на форуме несколько лет назад были ссылки и упоминания. ЗЫ ИМХО просто нужно потестить на Вашей платформе/сервер/клиентах/запросах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 10:12 |
|
||
|
разное время выполнения запроса, как понять?
|
|||
|---|---|---|---|
|
#18+
Andrey Daeron Winnipuh Во как, интересно. это именно для этого запроса? а сколько времени результат будет храниться и выбираться из кеша? 1. Для любых запросов 2. ИМХО до тех пор пока не выбьется из него другими. Из кеша ОС - согласно политики кеша ОС, из шаред_буферов - согласно алгоритмам PG. Про алгоритмы PG вроде на форуме несколько лет назад были ссылки и упоминания. все верно разделяемые буфера обрабатываются по немного видоизмененному LRU-алгоритму (least recently used), если быть точным -- по LRU/K-алгоритму. если интересно, чуть подробнее можно прочитать в известной статье Бартунова "Что такое PostgreSQL", например, здесь: http://postgresmen.ru/articles/view/57 , см. абзац "Управление буферами в PostgreSQL". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 10:24 |
|
||
|
разное время выполнения запроса, как понять?
|
|||
|---|---|---|---|
|
#18+
я понимаю, что для любых запросов, некорректно задал вопрос. Имелось в виду анализируются ли производные запросы от закешированного . проверил такое select * from xprop where xstring_vector @@ to_tsquery('default','mansur & (kara | haber)') limit 100; после 1 го раза закешировался, ок. потом делаю такой запрос: select * from xprop where xstring_vector @@ to_tsquery('default','mansur & haber') limit 100; и он тоже довольно резво выполняется. Может быть ПГ распознает его каким-то образом как "производный"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 10:26 |
|
||
|
разное время выполнения запроса, как понять?
|
|||
|---|---|---|---|
|
#18+
Winnipuh Имелось в виду анализируются ли производные запросы от закешированного . проверил такое select * from xprop where xstring_vector @@ to_tsquery('default','mansur & (kara | haber)') limit 100; после 1 го раза закешировался, ок. потом делаю такой запрос: select * from xprop where xstring_vector @@ to_tsquery('default','mansur & haber') limit 100; и он тоже довольно резво выполняется. Может быть ПГ распознает его каким-то образом как "производный"? PostgreSQL не анализирует "похожесть" запросов, он просто кеширует данные и индексы в памяти. Очевидно, эти два запроса у вас вызывают индекс-скан по одному и тому же индексу. Поэтому после первого запроса, индекс поднимается с диска в память и второй запрос (пусть и отличный от первого) пробегает по индексу, находящемуся уже в памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 16:06 |
|
||
|
разное время выполнения запроса, как понять?
|
|||
|---|---|---|---|
|
#18+
Winnipuhselect * from xprop where xstring_vector @@ to_tsquery('default','mansur & (kara | haber)') limit 100; select * from xprop where xstring_vector @@ to_tsquery('default','mansur & haber') limit 100; izОчевидно, эти два запроса у вас вызывают индекс-скан по одному и тому же индексу. Поэтому после первого запроса, индекс поднимается с диска в память и второй запрос (пусть и отличный от первого) пробегает по индексу, находящемуся уже в памяти.ИМХО, точнее сказать, что в общем случае с диска в память поднимается не весь индекс целиком, а лишь те индексные и табличные(!) страницы, на которых находятся данные, необходимые для выполнения данного запроса. Так как данные для второго запроса (mansur, haber) являются подмножеством данных для первого (mansur, kara, haber), то в идеале диск при втором запросе читаться не будет. Если бы например второй запрос был по словам (mansur, abrakadabra), то частично использовались бы данные, закэшированные в памяти, а частично - прочитались бы с диска. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 17:00 |
|
||
|
разное время выполнения запроса, как понять?
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat Winnipuhselect * from xprop where xstring_vector @@ to_tsquery('default','mansur & (kara | haber)') limit 100; select * from xprop where xstring_vector @@ to_tsquery('default','mansur & haber') limit 100; izОчевидно, эти два запроса у вас вызывают индекс-скан по одному и тому же индексу. Поэтому после первого запроса, индекс поднимается с диска в память и второй запрос (пусть и отличный от первого) пробегает по индексу, находящемуся уже в памяти.ИМХО, точнее сказать, что в общем случае с диска в память поднимается не весь индекс целиком, а лишь те индексные и табличные(!) страницы, на которых находятся данные, необходимые для выполнения данного запроса. Так как данные для второго запроса (mansur, haber) являются подмножеством данных для первого (mansur, kara, haber), то в идеале диск при втором запросе читаться не будет. Если бы например второй запрос был по словам (mansur, abrakadabra), то частично использовались бы данные, закэшированные в памяти, а частично - прочитались бы с диска. да, именно так, спасибо за уточнение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2007, 17:09 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34815350&tid=2005021]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
75ms |
get topic data: |
14ms |
get forum data: |
4ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 249ms |
| total: | 449ms |

| 0 / 0 |
