|
|
|
Параметрическое кеширование запросов в MySQL
|
|||
|---|---|---|---|
|
#18+
Продолжаю возится с MySQL и получаю удовольствие от хорошо продуманного концепта для своих задач. Возник вопрос о технике кеширования запрос в части query plan и кеша данных. Разницу кеширования MyISAM и InnoDB понимаю. Она совершенно логичная для MyISAM, который фактически заточен хранить большие таблицы данных без сложных связей и обновлений. Поэтому мегакешей от MyISAM и не ждем. Вопрос по кешированию InnoDB, опять же сравниваю с MS SQL. Для снятия нагрузки SQL-сервер как правило предоставляет сервисы кеширования планов выполнения и данных. В MS SQL такое кеширование параметрическое . В смысле что даже для SP или даже динамического SQL вы может закешировать запрос если он нестатический только на переменные-аргументы. Внимание вопрос. Умеет ли MySQL в InnoDB делает параметрическое кеширование для запросов в хранимых процедурах следующего типа? select .... from .... where ID=MyVar, где MyVar - переменная в хранимке Или нет никакой разницы с вызовом просто динамического SQL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2013, 00:35:31 |
|
||
|
Параметрическое кеширование запросов в MySQL
|
|||
|---|---|---|---|
|
#18+
общего кеща планов в MYQSL нет. что то есть но только для соединения, и умирает вместе с ним. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2013, 06:22:19 |
|
||
|
Параметрическое кеширование запросов в MySQL
|
|||
|---|---|---|---|
|
#18+
MicrosoftProjectRUП Вопрос по кешированию InnoDB, опять же сравниваю с MS SQL. Для снятия нагрузки SQL-сервер как правило предоставляет сервисы кеширования планов выполнения и данных. Зачем искать только знакомые черты ? Cмотрите на мир шире. Mysql выполняет кеширование сразу результатов запросов. Техника и революционна и провальна одновременно. К сожалению, запросов из pl/sql это не касается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2013, 12:33:49 |
|
||
|
Параметрическое кеширование запросов в MySQL
|
|||
|---|---|---|---|
|
#18+
ScareCrowобщего кеща планов в MYQSL нет. что то есть но только для соединения, и умирает вместе с ним. Это не очень страшно. Можно для сервера сделать warn up алгоритм, который прогревает кеши. Так в и MS SQL обпытными разработчиками делается к слову. Хотя вроде кеши есть, но их правильная конфигурация зависит от "обучения кеша". Поэтому опытные разрабы и админы имеют наборы скриптов для "прогрева". Обычно правда их запускают после перезагрузки сервера, чтобы у пользователей несколько часов не комотозила база. Вопрос в другой. Там сами-то MySQL что кеширует? - Планы? - Данные? Результаты запросов - это слабый очень кеш. Очень много запросов выкидывают 1-5 записей, а при этом обходят груду таблиц. Потом фреймворк на сервере имеет встроенный кеш записей, также кешируются клиентами большие блоки данных в памяти (я даже думаю физически хранить эти кеши). В принципе все современные App Servers имеют свои дополнительные механизмы кеширования. Правда интенсивное применение их обычно приводит к понятию "очереди" и обработки большинства запросов по одному без параллелизма вообще. Тут и обходы дедлоков заложены. Но резко падает производительность такой архитектуры, например MS Project Server в такой коме именно потому что так и сделан. Поэтому пока я избегаю таких подходов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2013, 16:48:46 |
|
||
|
Параметрическое кеширование запросов в MySQL
|
|||
|---|---|---|---|
|
#18+
MicrosoftProjectRUScareCrowобщего кеща планов в MYQSL нет. что то есть но только для соединения, и умирает вместе с ним. Это не очень страшно. Вопрос в другой. Там сами-то MySQL что кеширует? - Планы? - Данные? Планы в некой предварительной форме, поскольку он еще могут измениться в зависимости от конкретных значений параметров запросов. И обычно это очень страшно не работает. Я бы даже сказал почти никогда не работает из-за специфики применения mysql. Нужно чтобы использовались и параметризированные запросы и постоянные подключения. Результаты запросов - это слабый очень кеш. Но в mysql он обычно неплох. Опять же из-за специфики применения. Истории из параллельной вселенной оставьте для себя. Как вы себе представляете "прогрев" кеша в данной ситуации ? при каждом новом подключении подавать prepare сотни типовых запросов ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2013, 20:35:57 |
|
||
|
Параметрическое кеширование запросов в MySQL
|
|||
|---|---|---|---|
|
#18+
Кеш в MS SQL это куски таблиц, а не запросы. Иногда куски рабочих таблиц если используется "карусель" из MS SQL Enterprise. Но надо понимать, что сейчас велика нагрузка на App Server в логике. Поэтому различие SQL-серверов в известной степени стираются. Можно закешировать и результаты запросов. Например считать типовые таблицы-справочники. А на клиент грузить плоскую основную таблицу раскрывая ключи не через join, а через одиночные запросы. Я как-то и для MS SQL такой фокус делал. Повышает производительность умеренно, но сильно уменьшает дедлоки как раз. В принципе как сделан MyISAM ему сильно кеши-то и не нужны. Он как раз быстр, потому что нет типовых SQL-заморочек вокруг него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2013, 00:46:51 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38338091&tid=1836415]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
42ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 317ms |

| 0 / 0 |
