Hello world)
Очередной раз занялся разбором запросов к БД.
Выявил два долгих запроса:
1. К таблице comments, как я понял, генерирует их views, одно представление. Отключил, вроде стало легче)
2. Второй запрос выглядит вот так
SELECT node.nid AS nid, node.title AS node_title, node_data_field_teaser_image.field_teaser_image_fid AS node_data_field_teaser_image_field_teaser_image_fid, node_data_field_teaser_image.field_teaser_image_list AS node_data_field_teaser_image_field_teaser_image_list, node_data_field_teaser_image.field_teaser_image_data AS node_data_field_teaser_image_field_teaser_image_data, node.type AS node_type, node.vid AS node_vid, RAND() AS _random FROM node node LEFT JOIN term_node term_node_value_0 ON node.vid = term_node_value_0.vid AND term_node_value_0.tid = 1435 LEFT JOIN term_node term_node_value_1 ON node.vid = term_node_value_1.vid AND term_node_value_1.tid = 435 LEFT JOIN term_node term_node_value_2 ON node.vid = term_node_value_2.vid AND term_node_value_2.tid = 10367 LEFT JOIN term_node term_node_value_3 ON node.vid = term_node_value_3.vid AND term_node_value_3.tid = 11571 LEFT JOIN term_node term_node_value_4 ON node.vid = term_node_value_4.vid AND term_node_value_4.tid = 1441 LEFT JOIN term_node term_node_value_5 ON node.vid = term_node_value_5.vid AND term_node_value_5.tid = 11572 LEFT JOIN term_node term_node_value_6 ON node.vid = term_node_value_6.vid AND term_node_value_6.tid = 11570 LEFT JOIN content_field_teaser_image node_data_field_teaser_image ON node.vid = node_data_field_teaser_image.vid WHERE (node.status <> 0) AND (node.type IN ('blog')) AND (term_node_value_0.tid = 1435 OR term_node_value_1.tid = 435 OR term_node_value_2.tid = 10367 OR term_node_value_3.tid = 11571 OR term_node_value_4.tid = 1441 OR term_node_value_5.tid = 11572 OR term_node_value_6.tid = 11570) ORDER BY _random ASC LIMIT 0, 6
И выполняется такой запрос - минимум 100мс, как я понимаю это основной запрос к БД?
Пошел на другой сайт, под управлением Drupal, похожий запрос так же выполняется постоянно, но выглядит он по другому, и выполняется по быстрее, хоть и самый долгий(
SELECT DISTINCT node.nid AS nid, node.title AS node_title, node_data_field_teaser_img.field_teaser_img_fid AS node_data_field_teaser_img_field_teaser_img_fid, node_data_field_teaser_img.field_teaser_img_list AS node_data_field_teaser_img_field_teaser_img_list, node_data_field_teaser_img.field_teaser_img_data AS node_data_field_teaser_img_field_teaser_img_data, node.type AS node_type, node.vid AS node_vid, RAND() AS _random FROM node node LEFT JOIN content_type_post node_data_field_teaser_img ON node.vid = node_data_field_teaser_img.vid WHERE node.type IN ('post') ORDER BY _random ASC LIMIT 0, 6
Хотел грешить на производительность сервера, но отбросил этот вариант, так как остальные запросы выполняются быстро, пропорционального увеличения времени выполнения не произошло(
Помогите понять что выполняется в этом запросе и как это исправить?
Комментарии
Проблема найдена)
Любая выборка которая генерируется в помощью views делает "долгие" запросы. Какая может быть причина?
1. Размер БД - 1,9 Гб
2. "Битый" модуль views
???
Чего там смотреть если в сортировке рандом?
Где-то тут было, что View выставляет слишком много ненужных условий.
Победа!!))
Решение, как оказалось лежит в настройке views, нужно было вкл кеширование блоков, на странице производительности это было сделано, но как я понял блоки views не реагируют на эту настройку. После вкл кеширования в представлении, сайт вздохнул с облегчением.
Победа!!))
Решение, как оказалось лежит в настройке views, нужно было вкл кеширование блоков, на странице производительности это было сделано, но как я понял блоки views не реагируют на эту настройку. После вкл кеширования в представлении, сайт вздохнул с облегчением.
ORDER BY _random ASC LIMIT 0, 6
Я так понимаю вы вот за это говорите? ВИЖУ
В настройке вьюхи стоит - сортировка по времени создания.
и вьюха конечно же одна и дисплей у нее тоже один?