Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2018, 14:14   #1
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию Разница во времени localhost и хостинг реальный

Абсолютно все запросы, а у меня их множество большое, выполняются на реальном хостинге раза в 3 быстрее, кроме одного. Всяко вокруг него пляшу, никак не могу понять почему так долго работает.
На локалхосте отрабатывает за 20 секунд, на реальном 90, хотя должно секунд 7 максимум.

Вот такая процедура выполняется долго

Код:
/*--------------------------------------------------------------*/
Процедура
DELIMITER //
CREATE PROCEDURE cpu_analysis_procedure()
begin
   
    DECLARE i INT DEFAULT 2;
    DECLARE count_domain INT DEFAULT 0;
    
    TRUNCATE TABLE cpu_analysis;
        
    SET count_domain = (SELECT COUNT(*) FROM apache_logs_domain);
    
	WHILE i <= count_domain DO
        SET SQL_BIG_SELECTS=1;
		INSERT INTO cpu_analysis(log_time_cpu, log_time_apache, ip, domain, page, last_request, extension, cpu)
        
		SELECT B.log_time, C.log_time, C.ip, C.domain, C.page, B.last_request, B.extension, B.cpu
            FROM

                (SELECT cpu_logs.log_time, cpu_logs.last_request, cpu_logs.extension, cpu_logs.cpu
                    FROM 
                        (SELECT MIN(log_time) AS minimum, MAX(log_time) AS maximum, domain FROM `apache_logs` WHERE domain = i) AS A
                    INNER JOIN 
                        cpu_logs 
                        ON cpu_logs.domain = A.domain AND cpu_logs.log_time BETWEEN A.minimum AND A.maximum 
                        GROUP BY cpu_logs.log_time) AS B

            INNER JOIN

                (SELECT log_time, ip, domain, page FROM apache_logs WHERE domain = i) AS C
                ON (C.log_time BETWEEN (B.log_time - 300) AND (B.log_time + 60));
                
         SET i = i + 1;
	END WHILE;
    
end
//



/*--------------------------------------------------------------*/
Куда рыть, что изменить? уже и индексы кидал на поля, и сам подход менял, ну никак не хочет работать быстрее. Как оптимизировать, есть идеи?

Вот такой вот не очень хороший план показывает https://prnt.sc/j2u2cb
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 09.04.2018, 15:11   #2
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

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

Как совет можно данные сначала подготовить ну скажем просчитать все максимумы минимумы, положить это все промежуточную таблицу и ее уже клееть с чем надо.
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 09.04.2018, 15:45   #3
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

Да разобрал его на части, тестировал прям на хосте, все шустро отрабатывает.
Уже просто хз куда рыть
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 09.04.2018, 16:21   #4
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
а у меня их множество большое, выполняются на реальном хостинге раза в 3 быстрее, кроме одного.
- либо логи у этого хостера намного больше чем у других потому запрос там выполняется больше. либо там слабый сервер и ваша СУБД работает медленнее.

Вы запросы которые на части разбивали тестировали именно на том хостинге на котором медленно работает?
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 09.04.2018, 18:52   #5
a.n.o.n.i.m
Форумчанин
 
Регистрация: 26.02.2011
Сообщений: 301
По умолчанию

Да, там тестировал.

Дак суть то в том что есть запросы в разы сложнее и ресурсоемкее этого(затрагивают большее количество строк), но работает наура, а тут вот блин один единственный попался, ни в какую не хочет работать по шустрому.
a.n.o.n.i.m вне форума Ответить с цитированием
Старый 09.04.2018, 19:11   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Сделай одним insert-ом без цикла
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разница во времени!!!! Dj_DeVaIs Общие вопросы Delphi 1 24.04.2014 19:20
разница во времени вставливания the_deer_one SQL, базы данных 5 31.03.2013 12:24
Разница во времени supergood Microsoft Office Excel 2 18.10.2011 17:56
Разница во времени Kamalekb Общие вопросы Delphi 1 02.05.2010 20:10
Разница времени Djem1991 PHP 4 08.10.2009 13:05