Страница 1 из 1

процедура обновления

Добавлено: 2010-09-25 0:35:25
Alex Keda
собсно - процесс "структурировать базу данных" - он слишком долгий.
мне даже пришлось увеличить таймаут для ФастСГИ со 100 до 1000 секунд.
у нас большая база. лучше уже сейчас начинать задумываться что с этим делать.
если нужны доступы, посмотреть что там такое большое и долгое - выдам.

Re: процедура обновления

Добавлено: 2010-09-25 6:12:06
B0nuse
Нужно разбить запрос по лимитам и обновлять страницу на новый урл. Примерно так идет процесс обновления в phpbb3 и других форумах...

Re: процедура обновления

Добавлено: 2010-09-25 15:03:47
Alex Keda
я не к этому веду...

Код: Выделить всё

440623  h9514_bill      localhost       h9514_bill      Query   1       Sorting result  SELECT `ID` FROM `Tasks` WHERE (`IsActive` = 'yes' AND `IsExecuted` = 'no' AND `ExecuteDate` < UNIX_TIMESTAMP() AND `Errors` < 5) ORDER BY `CreateDate` DESC LIMIT 0, 1
440623  h9514_bill      localhost       h9514_bill      Query   2       Sorting result  SELECT `ID` FROM `Tasks` WHERE (`IsActive` = 'yes' AND `IsExecuted` = 'no' AND `ExecuteDate` < UNIX_TIMESTAMP() AND `Errors` < 5) ORDER BY `CreateDate` DESC LIMIT 0, 1
440623  h9514_bill      localhost       h9514_bill      Query   1       Sorting result  SELECT `ID` FROM `Tasks` WHERE (`IsActive` = 'yes' AND `IsExecuted` = 'no' AND `ExecuteDate` < UNIX_TIMESTAMP() AND `Errors` < 5) ORDER BY `CreateDate` DESC LIMIT 0, 1
440623  h9514_bill      localhost       h9514_bill      Query   2       Sorting result  SELECT `ID` FROM `Tasks` WHERE (`IsActive` = 'yes' AND `IsExecuted` = 'no' AND `ExecuteDate` < UNIX_TIMESTAMP() AND `Errors` < 5) ORDER BY `CreateDate` DESC LIMIT 0, 1
440623  h9514_bill      localhost       h9514_bill      Query   1       Sorting result  SELECT `ID` FROM `Tasks` WHERE (`IsActive` = 'yes' AND `IsExecuted` = 'no' AND `ExecuteDate` < UNIX_TIMESTAMP() AND `Errors` < 5) ORDER BY `CreateDate` DESC LIMIT 0, 1

не находите что долго?
таблица Tasks - ~179,796 записей
я уже предлагал сделать расчленёнку по годам чтоли...
ещё болше ServersUpTime - 1,520,979 - но, она MyISAM - там выборки гораздо быстрей
Events - 316,166 - опять же MyISAM - всё без проблем

Re: процедура обновления

Добавлено: 2010-09-25 15:10:36
Alex Keda
да, если совсем делать нечего будет - может сделать каконить график по ServersUpTime
?

Re: процедура обновления

Добавлено: 2010-09-26 8:20:06
serge
Можно конечно покрутить конфиг секции InnoDB, но тут желательно чтобы памяти было достаточно, чтобы вся БД в пул поместилась. Кеши попробовать поувеличивать.
Если в плане структуры БД, то одназначно партиционинг больших таблиц по годам.

Re: процедура обновления

Добавлено: 2010-09-26 12:42:57
Alex Keda
обаза вся в раму влезает
тока толку от этого ноль.
некоторые операции на InnoDB медленно выполняются

Re: процедура обновления

Добавлено: 2010-09-26 12:46:40
serge
Если все БД в памяти, то тут уже все упираться только в проц должно. По поводу медленности... смотреть нужно, возможно и получится ускорить немного.
===
А вообще смотреть нужно конечно в сторону оптимизации БД (структуры и возможно запросов в скриптах). Думаю на нашем примере это вполне возможно сделать. База уже достаточно большая (хотя еще и не огромная ;) ).

Re: процедура обновления

Добавлено: 2010-09-26 12:51:19
Alex Keda
4 оптерона - это совсем не мало.
тредов по топу 27 - т.е. юзаться должны все ядра...