X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V  < 1 2
Открыть тему
Тема закрыта
> MariaDB: несколько SELECT COUNT(*)
pastuhoff
pastuhoff
Topic Starter сообщение 11.8.2014, 23:38; Ответить: pastuhoff
Сообщение #12


Благодарю.
Разумеется, "основные рабочие" скрипты делают выборки по индексируемым полям `id` и/или `x`.
Вот этот кусок
SUM(IF(a=0,1,0)) AS `n2`,
SUM(IF(a=1,1,0)) AS `n3`,
SUM(IF(a>1,1,0)) AS `n4`,
считывает `a` три раза (пусть и из кэшей винчестера или операционной системы)? Можно ли переписать условие на какой-нибудь case и получить еще небольшое ускорение? Я понимаю, что если это и даст выйгрыш, то небольшой. Но если можно еще оптимизировать - нужно это сделать.

Сообщение отредактировал pastuhoff - 11.8.2014, 23:39


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
mialpet
mialpet
сообщение 12.8.2014, 12:06; Ответить: mialpet
Сообщение #13


Цитата(pastuhoff @ 11.8.2014, 20:57) *
Данные запросы нужны для контроля и массивы перебираться не будут.Просто фиксирование сводной статистики на некоторые моменты времени.

Куда вы данные выводить будете? В шаблон? Не циклом случаем? Если a == 1 в это поле, если a < 1 то в это поле. Но может я плохо представляю себе задачу.


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pastuhoff
pastuhoff
Topic Starter сообщение 12.8.2014, 13:50; Ответить: pastuhoff
Сообщение #14


Цитата(mialpet @ 12.8.2014, 12:06) *
Куда вы данные выводить будете?

Пока просто в браузер для визуального контроля (речь идет не о сайте с кучей посетителей, а о системе, написанной исключительно для собственного пользования).


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
mialpet
mialpet
сообщение 12.8.2014, 14:39; Ответить: mialpet
Сообщение #15


Цитата(pastuhoff @ 12.8.2014, 12:50) *
Пока просто в браузер для визуального контроля (речь идет не о сайте с кучей посетителей, а о системе, написанной исключительно для собственного пользования).

Вот я о том и говорю что при выводе (вы же циклом выводите) и фасовать данные как надо, а из базы одной выборкой взять с одним условием x = 1


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pastuhoff
pastuhoff
Topic Starter сообщение 12.8.2014, 14:53; Ответить: pastuhoff
Сообщение #16


Дело в том, что условию x=1 может удовлетворять как 50 000 записей (которые можно, в принципе, в массив загнать), так и 200 000 000. И сами записи мне не важны в данном случае. Только статистика. Да и вообще, бд должна делать нужные выборки.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
mialpet
mialpet
сообщение 12.8.2014, 14:55; Ответить: mialpet
Сообщение #17


Все! Дошло! Я тут не в тему залез сорри.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Neolands
Neolands
сообщение 12.8.2014, 17:25; Ответить: Neolands
Сообщение #18


Цитата(pastuhoff @ 11.8.2014, 16:19) *
Зачения a и b (на самом деле там еще аналогичные c,d,...) меняются очень часто (процессор почти на 100% загружен почти 100% времени именно этими изменениями). Таблица пока на ~ 50 гигабайт (600+ миллионов записей). В перспективе - увеличение числа записей в пару раз. Думаю, доп. индексы при этом делать не нужно.

Дополнительные индексы при таком подходе возможно будут даже вредить производительности, при добавлении данных в таблицу или их изменении индекс перестраивается.
Я бы предложил внести изменения в Ваше приложение, если это возможно:

1) Разделить данные по разным таблицам, например по суточно, каждый раз в 00-00 создавать новую и писать свежие дынные в нее.
Таким образом в таблицах за прошлые дни не будет происходить изменений или добавлений данных, не будет происходить перестраивание индексов, кэширование запросов будет более эффективным.

2) К прошедшим дням завести отдельную таблицу со статистикой Ваших суммирований.

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


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
pastuhoff
pastuhoff
Topic Starter сообщение 12.8.2014, 17:29; Ответить: pastuhoff
Сообщение #19


Благодарю. Но данные меняются постоянно в пределах всей большой таблицы. Разбиение на разные таблицы, партицирование, смена движка и т.п. не рассматриваются.
Сейчас мне интересно, можно ли оптимизировать этот кусок:
SUM(IF(a=0,1,0)) AS `n2`,
SUM(IF(a=1,1,0)) AS `n3`,
SUM(IF(a>1,1,0)) AS `n4`,
При этом происходит только одно чтение 'a' или три (даже если из кэша hdd или os)?


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Neolands
Neolands
сообщение 12.8.2014, 22:51; Ответить: Neolands
Сообщение #20


Цитата(pastuhoff @ 12.8.2014, 17:29) *
Сейчас мне интересно, можно ли оптимизировать этот кусок:

Попробуйте запросы проанализировать с помощью EXPLAIN.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


Сообщение отредактировал Neolands - 12.8.2014, 22:51


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V  < 1 2
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Сайты пролежали несколько месяцев, насколько реально восстановить трафик?
78 metvekot 13039 Вчера, 19:43
автор: MorKer
Открытая тема (нет новых ответов) Несколько регионов для сайта услуг
Как лучше?
14 KM_ 1280 9.3.2023, 13:04
автор: MGorelkin
Горячая тема (нет новых ответов) Несколько площадок под ваши статьи и ссылки
119 slaru 52046 14.10.2022, 13:52
автор: slaru
Открытая тема (нет новых ответов) Несколько площадок под статьи (Беларусь)
5 vbiznese 1576 4.8.2022, 18:11
автор: vbiznese
Открытая тема (нет новых ответов) Куплю несколько сайтов
2 Svet2019 1296 31.10.2019, 0:05
автор: Rodiola


 



RSS Текстовая версия Сейчас: 1.6.2023, 19:48
Дизайн