|
16 / 16 / 8
Регистрация: 15.03.2010
Сообщений: 321
|
||||||||||||||||
Снова про кеширование запросов к БД23.09.2019, 19:50. Показов 986. Ответов 1
Метки нет (Все метки)
Всем привет.
Работаю с PHP и MySQL уже давно, но, к моему стыду, про кеширование только читал, надобности никуда внедрять не было. Теперь настал мой час )))) VPS. Сайт. Есть поиск по сайту. После ввода 2-х символов идет запрос к БД и результаты сразу выгружаются под строку поиска. При вводе более 2-х символов - поиск сделал уже на стороне клиента из того, что пришло из БД, чтобы избежать лишних запросов. С клиентской частью все гуд, все по скорости устраивает. А вот запрос к БД не устраивает, около 2-х секунд - это долго, пользователь не будет набирать сначала два символа, потом подождал, потом остальные. Поиск идет по разным таблицам: категории, подкатегории, товары, пользователи и т.п. Попутно, идут запросы к связанным таблицам, например страны, города и т.п., чтобы потом у пользователей, в результатах удовлетворяющих строк, подставить название страны и города, например. Запросы стандартного вида:
Получается, что есть записи, которые можно кешировать на месяц, какие-то на сутки, какие-то на 15 минут, какие-то минут на 5. Как поступить лучше, посоветуйте пожалуйста: 1) Кешировать как-то весь результат всех запросов для определенного значения $query. Т.е. если учесть что пользователь будет вводить на русском языке и это 2 символа, то думаю менее 1000 возможных результатов будет. 2) Кешировать каждый запрос по отдельности с указанием срока. Ну и самый интересный вопрос: какое кеширование лучше здесь подойдет? Поможет ли MySQLCache, типа
Буду безмерно благодарен за советы и помощь!
0
|
||||||||||||||||
| 23.09.2019, 19:50 | |
|
Ответы с готовыми решениями:
1
Кеширование запросов к БД И снова про PopupMenu (было про длину, теперь про ширину) Кеширование данных запросов в приложении |
|
29 / 26 / 18
Регистрация: 02.04.2015
Сообщений: 316
|
||
| 28.09.2019, 00:48 | ||
|
Сразу оговорюсь: не факт, что дам правильные советы! )
Дальше по порядку: - mysql от oracle, а так же форки от mariadb и percona, в современных версиях либо полностью ушли от кеширования результатов запросов, либо объявили эту опцию устаревшей. Если сейчас заморочиться, найти базу, которая пока не выкинула query_cache_* из доступных опций, то очень скоро можно столкнуться с необходимостью "всё переписывать". - Можно обратить внимание на полнотекстовый поиск в mysql, однако они же, в соседней статье, рекомендуют не делать этого средствами mysql; - Если вот это: - В php есть memcache и ему подобные. Если создание таблицы невозможно (например нет админ.прав), то можно строить свой кеш прямо в php с ключам и временем жизни (актуально, если условие из предыдущего пункта выполняется и "менее 1к возможных вариантов" - реальность). - В последнее время, всякий раз, когда необходимо искать вхождения текста, я ухожу от mysql в сторону NoSQL баз (лично я привык пользоваться Elasticsearch'ем, потому как он "простой в доску" в использовании). Слухи о прожорливости ресурсов считаю не состоятельными, так как та же mysql, для обеспечения сопоставимой скорости выполнения поиска в тексте, потребует и сожрёт не меньше, а скорее больше. Всё вышеперечисленное сугубо субъективное видение ситуации "около кеширования" участника сего форума, часто самого спрашивающего в разделах "для начинающих". Удачи))
1
|
||
| 28.09.2019, 00:48 | |
|
Помогаю со студенческими работами здесь
2
Prototype Как отменить кеширование get-запросов? Снова про Снова про TabOrder и снова про e-mail Снова про ACWZMAIN Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|