Как сократить запросы БД

dauren300
На сайте с 17.06.2010
Offline
53
858

Как сократить запросы БД? последнее время постоянно приходят письма от хостера с превышением нагрузки БД.

двиги: ДЛЕ, ВП

Блог о игре Золотой Клон - Info3K.ru (http://Info3K.ru)
T3
На сайте с 16.02.2007
Offline
132
#1

Включите кэширование для начала. Сколько у вас суммарно трафика на этом хостинге?

Рекомендую VPS за $5/месяц (https://m.do.co/c/e366f023194b). Готовый сервер разворачивается за 2 минуты.
dauren300
На сайте с 17.06.2010
Offline
53
#2

вот основные запросы которые создают нагрузку на БД, что делать?

# User@Host: name_name[name_name] @  [91.218.229.16]
# Thread_id: 268441870 Schema: name_name Last_errno: 0 Killed: 0
# Query_time: 0.026727 Lock_time: 0.000336 Rows_sent: 18 Rows_examined: 3762 Rows_affected: 0 Rows_read: 18
# Bytes_sent: 339 Tmp_tables: 0 Tmp_disk_tables: 0 Tmp_table_sizes: 0
use name_name;
SET timestamp=1351380013;
select ct.id,
(select count(*) from dle_post ps where (ps.category REGEXP concat( '^(' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ')$' ) or ps.category=ct.id) AND (DATE_FORMAT(date, '%Y%m%d')=CURDATE()) AND approve = '1') as new_,
(select count(*) from dle_post ps where (ps.category REGEXP concat( '^(' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ',)' ) or ps.category REGEXP concat( '(,' ,ct.id, ')$' ) or ps.category=ct.id) AND approve = '1') as allnews_
from dle_category ct;
# User@Host: name_name[name_name] @ [91.218.229.16]
# Thread_id: 268441870 Schema: name_name Last_errno: 0 Killed: 0
# Query_time: 0.027062 Lock_time: 0.000191 Rows_sent: 1 Rows_examined: 12617 Rows_affected: 0 Rows_read: 1
# Bytes_sent: 62 Tmp_tables: 0 Tmp_disk_tables: 0 Tmp_table_sizes: 0
SET timestamp=1351380013;
SELECT COUNT(*) as count FROM dle_users where FROM_UNIXTIME(reg_date) > NOW() - INTERVAL 1 DAY;
# User@Host: name_name[name_name] @ [91.218.229.16]
# Thread_id: 268441870 Schema: name_name Last_errno: 0 Killed: 0
# Query_time: 0.026412 Lock_time: 0.000048 Rows_sent: 1 Rows_examined: 12617 Rows_affected: 0 Rows_read: 1
# Bytes_sent: 63 Tmp_tables: 0 Tmp_disk_tables: 0 Tmp_table_sizes: 0
SET timestamp=1351380013;
SELECT COUNT(*) as count FROM dle_users where FROM_UNIXTIME(reg_date) > NOW() - INTERVAL 1 MONTH;
# User@Host: name_name[name_name] @ [91.218.229.16]
# Thread_id: 268441870 Schema: name_name Last_errno: 0 Killed: 0
# Query_time: 0.026490 Lock_time: 0.000044 Rows_sent: 1 Rows_examined: 12617 Rows_affected: 0 Rows_read: 1
# Bytes_sent: 60 Tmp_tables: 0 Tmp_disk_tables: 0 Tmp_table_sizes: 0
SET timestamp=1351380013;
SELECT COUNT(*) as count FROM dle_users where FROM_UNIXTIME(reg_date) > NOW() - INTERVAL 1 HOUR;
# User@Host: name_name[name_name] @ [91.218.229.16]
# Thread_id: 268441870 Schema: name_name Last_errno: 1292 Killed: 0
# Query_time: 0.022383 Lock_time: 0.000044 Rows_sent: 1 Rows_examined: 12617 Rows_affected: 0 Rows_read: 1
# Bytes_sent: 60 Tmp_tables: 0 Tmp_disk_tables: 0 Tmp_table_sizes: 0
SET timestamp=1351380013;
SELECT COUNT(*) as count FROM dle_users where FROM_UNIXTIME(banned) > NOW() - INTERVAL 1 MONTH;
siv1987
На сайте с 02.04.2009
Offline
427
#3

Отключить левые моды, таких запросов в дле нет.

Первый вообще жесть, второй можно оптимизировать немного, если вместо FROM_UNIXTIME(reg_date) > NOW() юзать reg_date > UNIX_TIMESTAMP( NOW() - INTERVAL 1 MONTH )

M
На сайте с 12.11.2005
Offline
122
#4

Это статистика какая-то, видимо, т.е. никакой особой пользы не несет, так что можно просто убрать эти выборки и тот блок, куда она выводится.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий