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
Открыть тему
Тема закрыта
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Жители РФ не спешат отказываться от Gmail, хотя на размышления осталось всего несколько месяцев
20 Room 4180 11.3.2024, 16:00
автор: Lumex
Горячая тема (нет новых ответов) Сайты пролежали несколько месяцев, насколько реально восстановить трафик?
108 metvekot 21410 27.1.2024, 22:39
автор: Vmir
Горячая тема (нет новых ответов) Несколько площадок под ваши статьи и ссылки
119 slaru 54651 14.10.2022, 13:52
автор: slaru
Открытая тема (нет новых ответов) Несколько площадок под статьи (Беларусь)
5 vbiznese 1986 4.8.2022, 18:11
автор: vbiznese
Открытая тема (нет новых ответов) Куплю несколько сайтов
2 Svet2019 1486 31.10.2019, 0:05
автор: Rodiola


 



RSS Текстовая версия Сейчас: 25.4.2024, 6:11
Дизайн