|
|
|
| Я хочу реализовать собственный механизм кеширование. Тоесть, например, не делать каждый раз запрос к БД на вывод информации, а сохранить страницу в кеш, и брать ее оттуда. И только когда в бд происходит изменение/добавление данных, то тогда обновлять кеш.
Вопрос только в том как правильно реализовать алгоритм проверки времени последнего изменения данных в таблице.
У меня возник вариант проверять с помощью SHOW table STATUS like '%' FROM `bd`, но пологаю что это очень ресурсозатратная вещь, причем таблиц несколько. | |
|
|
|
|
|
|
|
для: admiral
(13.02.2010 в 03:37)
| | Интересно, а чем не угодили стандартные средства кеширования запросов [выборок], встроенные в MySQL? | |
|
|
|
|
|
|
|
для: Тень&
(14.02.2010 в 19:47)
| | Стандартный мемкеш в MySQL может быть доступен только суперпользователю. Такие вещи я не могу позволить клиентам своего сервера. Да и все хостеры не позволяют | |
|
|
|
|
|
|
|
для: admiral
(15.02.2010 в 00:51)
| | Это ложь неправда. | |
|
|
|
|
|
|
|
для: Тень&
(15.02.2010 в 01:53)
| | >Это ложь неправда.
Чтобы включить кэш запросов и выделить под него 32 мегабайта памяти можно выполнить запрос set @@global.query_cache_size=32*1024*1024; с правами суперпользователя, а чтобы сделать эту настройку постоянной, следует добавить в my.cnf в подраздел [mysqld] строчку у query_cache_size=32M. Второй полезный параметр - query_cache_limit задает максимальный объем результата выполнения запроса, который может быть помещен в кэш
Например, у masterhost'а мемкеш выключен. | |
|
|
|
|
|
|
|
для: admiral
(15.02.2010 в 02:54)
| | Чо-то Вы все в кучу свалили: мемкэш-то тут при чем? Ясный перец что он будет отключен, если вы его не заказывали. Но к кэшу mysql-то он какое отношение имеет? | |
|
|
|
|
|
|
|
для: admiral
(15.02.2010 в 02:54)
| | > с правами суперпользователя, а чтобы сделать эту настройку постоянной, следует добавить в my.cnf в подраздел [mysqld] строчку у query_cache_size=32M
Ну и? Для использования механизма кеширования MySQL, требуются права суперпользователя? | |
|
|
|
|
|
|
|
для: Тень&
(15.02.2010 в 16:21)
| | нет, но он по умолчанию выключен. А включить нет возможности на хостинге. ведь так | |
|
|
|
|
|
|
|
для: admiral
(15.02.2010 в 18:28)
| | > Например, у masterhost'а мемкеш выключен.
Не знаю, честно, какой смысл ты вкладываешь в слово "мемкеш" (мы же вроде не про memcached тут говорим), но кеш MySQL на masterhost.ru включён:
SHOW VARIABLES LIKE '%cache%'
|
binlog_cache_size 32768
have_query_cache YES
key_cache_age_threshold 300
key_cache_block_size 1024
key_cache_division_limit 100
max_binlog_cache_size 4294963200
query_cache_limit 4194304
query_cache_min_res_unit 4096
query_cache_size 536870912
query_cache_type ON
query_cache_wlock_invalidate OFF
table_cache 16384
thread_cache_size 16
|
Так что не надо лгать вводить в заблуждение.
P.S. Единственное, я не одобраю ON, лучше DEMAND. | |
|
|
|
|
|
|
|
для: admiral
(13.02.2010 в 03:37)
| | >Вопрос только в том как правильно реализовать алгоритм проверки времени последнего изменения данных в таблице.
А зачем вообще нужно узнавать когда изменилась таблица, может проще создавать новый кеш вместе с функцией изменения в таблице.
Тоесть поступает запрос на изменения и вы тут хопа, сразу же создаете новый кеш. | |
|
|
|
|
|
|
|
для: tim313
(15.02.2010 в 01:42)
| | Тоже как вариант. Спасибо! | |
|
|
|