Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: механизм кеширования
 
 автор: admiral   (13.02.2010 в 03:37)   письмо автору
 
 

Я хочу реализовать собственный механизм кеширование. Тоесть, например, не делать каждый раз запрос к БД на вывод информации, а сохранить страницу в кеш, и брать ее оттуда. И только когда в бд происходит изменение/добавление данных, то тогда обновлять кеш.

Вопрос только в том как правильно реализовать алгоритм проверки времени последнего изменения данных в таблице.
У меня возник вариант проверять с помощью SHOW table STATUS like '%' FROM `bd`, но пологаю что это очень ресурсозатратная вещь, причем таблиц несколько.

  Ответить  
 
 автор: Тень&   (14.02.2010 в 19:47)   письмо автору
 
   для: admiral   (13.02.2010 в 03:37)
 

Интересно, а чем не угодили стандартные средства кеширования запросов [выборок], встроенные в MySQL?

  Ответить  
 
 автор: admiral   (15.02.2010 в 00:51)   письмо автору
 
   для: Тень&   (14.02.2010 в 19:47)
 

Стандартный мемкеш в MySQL может быть доступен только суперпользователю. Такие вещи я не могу позволить клиентам своего сервера. Да и все хостеры не позволяют

  Ответить  
 
 автор: Тень&   (15.02.2010 в 01:53)   письмо автору
 
   для: admiral   (15.02.2010 в 00:51)
 

Это ложь неправда.

  Ответить  
 
 автор: admiral   (15.02.2010 в 02:54)   письмо автору
 
   для: Тень&   (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'а мемкеш выключен.

  Ответить  
 
 автор: Loki   (15.02.2010 в 13:16)   письмо автору
 
   для: admiral   (15.02.2010 в 02:54)
 

Чо-то Вы все в кучу свалили: мемкэш-то тут при чем? Ясный перец что он будет отключен, если вы его не заказывали. Но к кэшу mysql-то он какое отношение имеет?

  Ответить  
 
 автор: Тень&   (15.02.2010 в 16:21)   письмо автору
 
   для: admiral   (15.02.2010 в 02:54)
 

> с правами суперпользователя, а чтобы сделать эту настройку постоянной, следует добавить в my.cnf в подраздел [mysqld] строчку у query_cache_size=32M

Ну и? Для использования механизма кеширования MySQL, требуются права суперпользователя?

  Ответить  
 
 автор: admiral   (15.02.2010 в 18:28)   письмо автору
 
   для: Тень&   (15.02.2010 в 16:21)
 

нет, но он по умолчанию выключен. А включить нет возможности на хостинге. ведь так

  Ответить  
 
 автор: Тень&   (15.02.2010 в 18:40)   письмо автору
 
   для: 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.

  Ответить  
 
 автор: tim313   (15.02.2010 в 01:42)   письмо автору
 
   для: admiral   (13.02.2010 в 03:37)
 

>Вопрос только в том как правильно реализовать алгоритм проверки времени последнего изменения данных в таблице.

А зачем вообще нужно узнавать когда изменилась таблица, может проще создавать новый кеш вместе с функцией изменения в таблице.
Тоесть поступает запрос на изменения и вы тут хопа, сразу же создаете новый кеш.

  Ответить  
 
 автор: admiral   (15.02.2010 в 02:57)   письмо автору
 
   для: tim313   (15.02.2010 в 01:42)
 

Тоже как вариант. Спасибо!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования