Re[3]: Обновление времени доступа файлов в mysql

Михаил Монашёв postmaster at softsearch.ru
Thu Jun 18 18:25:48 MSD 2009


Здравствуйте, Денис.

>> Не  надо  хранить  файлы  в  mysql.  Отдавайте  их  с  диска.  А время
>> обновляйте в базе спомощью парсинга аксес-лога nginx-а.

>> В  вашем  варианте  fastcgi  приложение  Вы  можете  хоть на асемблере
>> написать. Узким местом будет mysql, а не fastcgi приложение.

Д>>> Есть задача сделать обновление времени доступа к статике в базе mysql.
Д>>> Хочу написать на С fastcgi приложение, которое будет в отдельном
Д>>> потоке выполнять sql команду, что то вроде:
Д>>> UPDATE files SET lastVisit=UNIX_TIMESTAMP() WHERE id=?
Д>>> и немедленно отдавать файл nginx. Что бы в случае большой
Д>>> нагрузки на sql сервер статика отдавалась мгновенно. id будет браться
Д>>> из имени файла, но это дело десятое.
Д>>> Конфигурация получится что то вроде:
Д>>> location /files/ {
Д>>>     fastcgi_pass localhost:9000;
Д>>> }

Д>>> Вопросы следующие.
Д>>> 1. Можно ли в эту секцию добавить директиву "expires 1d". Чтобы статика
Д>>> кэшировалась на клиентах и была нагрузка поменьше.
Д>>> 2. Как сделать, чтобы в случае отказа fastcgi сервера файлы брались из
Д>>> локальной директории, ну например: /home/www/files.
Д>>> 3. Решал ли кто-нибудь подобную задачу другими методами?


Д> Была такая мысль. Но уже сейчас аккесс логи набигают за час в сотни мегабайт.
Д> А если размеры будут в гигабайтах, сможет ли парсер делать такое
Д> количество апдейтов в базе данных за приемлемое время?
Д> Или лучше варианта не придумать?

Если не сможет парсер, то не сможет и fastcgi  приложение.

Возможные  выходы: логи можно парсить параллельно, записывая отдельный
лог  для каждого локейшна или сервера; Делать апдейты можно не в одну,
а  в  несколько таблиц (в случае с MyISAM это избавить от блокировок),
можно  писать  не  в  одну, а в несколько демонов mysql, запущенных на
разных  серверах;  и  что приятно - парсинг можно временно отключать и
ничего не потеряется - всё останется в логах.

P.S.
Возможно  в  Вашей  схеме  mysql  и  не  нужен?  Может  посмотреть  на
memcachrdb?
  

--

С уважением,
Михаил Монашёв, SoftSearch.ru
mailto:postmaster at softsearch.ru
ICQ# 166233339
http://michael.mindmix.ru/
Без бэкапа по жизни.






More information about the nginx-ru mailing list