Форум русскоязычного сообщества Ubuntu


Автор Тема: Как кешировать запросы к базе данных?  (Прочитано 469 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Andrew72

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Здравствуйте уважаемые!
Столкнулся с проблемой на веб-сервере тяжелый интернет магазин очень большой отклик от сайта грузятся страницы по 8 секунд.

Подскажите пожалуйста как можно кешировать запросы к базе данных что бы при клике посетителя не генерировался новый запрос а брался готовый из кеша?

Оффлайн Heider

  • Старожил
  • *
  • Сообщений: 1250
    • Просмотр профиля
Re: Как кешировать запросы к базе данных?
« Ответ #1 : 09 Февраль 2017, 14:39:17 »
Нормальная база данных и так вся висит в кэше, если она небольшая, если большая, то самые используемые страницы. Если БД очень большая, то для уменьшения времени обработки запросов может помочь правильная индексация.

Чтобы как-то уменьшить время отклика, нужно знать, что за СУБД у Вас, какой движок на сайте. Какой сервер у Вас, сколько на нем ресурсов и т.п. Причин таких тормозов может быть много.
« Последнее редактирование: 09 Февраль 2017, 14:46:42 от Heider »

Оффлайн fluf

  • Любитель
  • *
  • Сообщений: 53
    • Просмотр профиля
Re: Как кешировать запросы к базе данных?
« Ответ #2 : 09 Февраль 2017, 14:43:27 »
Какой именно "веб-сервер"?

На сервере, где он крутится всё ок? RAM навалом, CPU отдыхает?
Коннект до базы тоже ок? Типа "10mbps out of 1000mbps"?
Сервер БД тоже ок? При запросах с других серваков база прямо летает?

Оффлайн Andrew72

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Как кешировать запросы к базе данных?
« Ответ #3 : 09 Февраль 2017, 14:47:30 »
сервер на debian 8
база данных MySQL Server version: 5.5.54-0+deb8u1 (Debian)
Сама база весит 800мб

сайт на cms shop-script

сервер сделан из домашнейго компа
Процессор i7 4700
Оперативной памяти 16гб
жесткий диск не ssd

Оффлайн Heider

  • Старожил
  • *
  • Сообщений: 1250
    • Просмотр профиля
Re: Как кешировать запросы к базе данных?
« Ответ #4 : 09 Февраль 2017, 14:52:41 »
Не такая уж большая база, должно летать все. Боюсь, что проблема в движке cms shop-script. Сам я такие движки не использую, поэтому конкретно не подскажу, как оптимизировать. Поройтесь там в настройках, должно быть что-то вроде: "Создать индекс" или разберитесь, по каким полям таблиц у Вас идет поиск записи и сделайте индекс на эти поля.

Оффлайн Andrew72

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Как кешировать запросы к базе данных?
« Ответ #5 : 09 Февраль 2017, 14:55:13 »
Какой именно "веб-сервер"?

На сервере, где он крутится всё ок? RAM навалом, CPU отдыхает?
Коннект до базы тоже ок? Типа "10mbps out of 1000mbps"?
Сервер БД тоже ок? При запросах с других серваков база прямо летает?



На серваке крутятся и другие сайты но не такие тяжелые у них отклик от 40мс до 300мс
канал свободный максимальная скорость отдачи 200mbps

но тот который тяжелый сайт у него странички по 46кб а грузятся по 8секунд

Исправил.
Вставка полноразмерных изображений в сообщения запрещена.
Прочитайте правила:

«Руководство по добавлению изображений на форум»
--Aleksandru
« Последнее редактирование: 09 Февраль 2017, 15:22:40 от Aleksandru »

Оффлайн Heider

  • Старожил
  • *
  • Сообщений: 1250
    • Просмотр профиля
Re: Как кешировать запросы к базе данных?
« Ответ #6 : 09 Февраль 2017, 14:57:18 »
но тот который тяжелый сайт у него странички по 46кб а грузятся по 8секунд
А странички на PHP? Можно глянуть код? Пароли к БД затрите только.
« Последнее редактирование: 09 Февраль 2017, 14:59:26 от Heider »

Оффлайн Andrew72

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Как кешировать запросы к базе данных?
« Ответ #7 : 09 Февраль 2017, 15:13:35 »
странички php+smarty
там в коде ничего тяжелого нету

просто при переходе в категорию постоянно делает запрос к бд и из нее вытягивает данные а не берет из кеша

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27443
    • Просмотр профиля
Re: Как кешировать запросы к базе данных?
« Ответ #8 : 09 Февраль 2017, 15:20:11 »
кешировать запросы к базе данных
Сам то понял, что спросил?…
странички php+smarty
У Смарти есть кэширование.
Не вижу, каком боком этот вопрос относится к Ubuntu.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн TeenSpirit

  • Любитель
  • *
  • Сообщений: 53
    • Просмотр профиля
    • Speed24
Re: Как кешировать запросы к базе данных?
« Ответ #9 : 09 Февраль 2017, 15:27:51 »
mysql -e "SHOW GLOBAL STATUS LIKE 'Qcache%'"
Выхлоп в студию.

Оффлайн Andrew72

  • Автор темы
  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Как кешировать запросы к базе данных?
« Ответ #10 : 09 Февраль 2017, 15:28:44 »
mysql -e "SHOW GLOBAL STATUS LIKE 'Qcache%'"
root@tmnhost:/home/droni4# mysql -e "SHOW GLOBAL STATUS LIKE 'Qcache%'"
+-------------------------+----------+
| Variable_name           | Value    |
+-------------------------+----------+
| Qcache_free_blocks      | 460      |
| Qcache_free_memory      | 62703440 |
| Qcache_hits             | 15971382 |
| Qcache_inserts          | 15247050 |
| Qcache_lowmem_prunes    | 2134139  |
| Qcache_not_cached       | 37077    |
| Qcache_queries_in_cache | 1145     |
| Qcache_total_blocks     | 2894     |
+-------------------------+----------+

Оффлайн TeenSpirit

  • Любитель
  • *
  • Сообщений: 53
    • Просмотр профиля
    • Speed24
Re: Как кешировать запросы к базе данных?
« Ответ #11 : 09 Февраль 2017, 15:41:54 »
Ну что, кеширование запросов включено. Скорее всего причина в некешируемых запросах.
Например, если в них есть что-то типа
WHERE ... > NOW()
и другие причины. Ставь percona query digest, лови медленные, думай как исправить. То же самое - если включить лог медленных запросов. Но перкона серьезный инструмент.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27443
    • Просмотр профиля
Re: Как кешировать запросы к базе данных?
« Ответ #12 : 09 Февраль 2017, 15:44:04 »
TeenSpirit, ты тратишь своё и чужое время на фигню.
Прочти ещё раз первое сообщение топика.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

Страница сгенерирована за 0.275 секунд. Запросов: 24.