powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
25 сообщений из 471, страница 18 из 19
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043238
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov, а пробовал таблицу в MyISAM переключить?
Будет быстрее вставка или выборка?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043239
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,

ну не я же вцепился в БД)
о Перле ничего не скажу, я Перла не знаю совершенно. Можно там хранить данные как в БД?
В БД мы можем хранить сравнительные пары.
Для каждой новой строки добавляем пары только для новой строки. Это будет продолжительное время недолгой операцией.
Поэтому нет смысла засовывать сразу в память всю таблицу пар.
Все это наполнение - первичное, "завтра" его делать не надо.
Весь затык - в последнем "свертывании".
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043240
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Будет быстрее вставка или выборка?

Раза в 2 будет быстрее, кмк.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043242
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Alex_Ustinov, а пробовал таблицу в MyISAM переключить?
Будет быстрее вставка или выборка?
вставка меня не волнует, это больше зависит от дисков а выборка вряд ли будет быстрее

выше описал, что в данной задаче - это накопительная функция
Выборка большая, вопрос в том где эти данные обабатывает MySQL. ворочает в памяти или кидает в темпы.
Я не спец в тюнинге. Может позже попробую в MyISAM.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043243
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
Можно там хранить данные как в БД?

Там не надо их хранить. Есть словарь - это типа таблица с ключом. Всё, больше ничего для этой задачи не надо.
Alex_Ustinov
Поэтому нет смысла засовывать сразу в память всю таблицу пар

Пары это, где посчитали сколько совпало цифр? Она не большая получается и в память должна влазить полностью.
Alex_Ustinov
Весь затык - в последнем "свертывании".

"Свёртывание", если это то, про что я думаю, делается проще. У нас уже есть пары и набор совпавших чисел. Этот набор скидываем в комбинаторную функцию, которая выдаёт нам n наборов по 10 чисел. Каждый набор - это ключ. Добавляем этот ключ в словарь вместе с парой дат. Всё. Если надо в другом виде - развёртываем словарь в таблицу, где будет пара дат (или еще чего угодно) и ключ-последовательность. Когда начнёт не влазить в память, придётся прыгать с запросами и кэшами, но это произойдёт еще не скоро.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043244
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,

авторПары это, где посчитали сколько совпало цифр? Она не большая получается и в память должна влазить полностью.да, это основная рабочая таблица в данном варианте решения
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043246
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

Я вообще тащусь со всей этой истории. Андрейка взял заказ за 100 евро, сделать не может, а весь форум вокруг него бегает, пытается решить простую задачу изначально проблемным способом, от которого задача становится неподъёмной. Будут лишние сто евро, тоже закажу у него что-нибудь.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043247
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
да, это основная рабочая таблица в данном варианте решения

Сколько там записей выходит с теми данными, которые он прислал?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043248
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
Так у вас есть решение?

У меня есть решение уже две недели как. Да что это меняет.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043253
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,

Есть идея как изящно на Оракле сделать вторую часть. Поиск групп.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043257
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Есть идея как изящно на Оракле сделать вторую часть. Поиск групп.

Я даже думать про это боюсь. Как только речь заходит о выборках сложнее
Код: sql
1.
select a,b,c from c,d,e where <joins> and x,y,z


У меня начинает болеть голова и охота прилечь.

А как там сделать через поиск групп? Нам же надо сделать перестановки, для этого надо какую-то функцию пилить (по идее можно через pipeline функции). Без перестановок будет всё ооочень медленно, оракл отрубит поддержку к тому времени и база самопроизвольно вырубится.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043258
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
crutchmaster,

авторПары это, где посчитали сколько совпало цифр? Она не большая получается и в память должна влазить полностью.
да, это основная рабочая таблица в данном варианте решениявыкладки выше - для 6-ти чисельных совпадений >4 млн если правильно запомнил
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043259
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
mayton
Есть идея как изящно на Оракле сделать вторую часть. Поиск групп.

Я даже думать про это боюсь. Как только речь заходит о выборках сложнее
Код: sql
1.
select a,b,c from c,d,e where <joins> and x,y,z


У меня начинает болеть голова и охота прилечь.

А как там сделать через поиск групп? Нам же надо сделать перестановки, для этого надо какую-то функцию пилить. Без перестановок будет всё ооочень медленно, оракл отрубит поддержку к тому времени и база самопроизвольно вырубится.
какие перестановки? этот этап пройден через побитовое сравнение, мы возвращаемся в начало?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043261
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
какие перестановки? этот этап пройден через побитовое сравнение

Nyet. После побитового у нас только пары записей в которых совпало больше n чисел, дальше из этих n чисел надо делать все уникальные выборки по k чисел. А потом уже группировать эти выборки и считать сколько пар туда попало и каких.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043262
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

Ну она сама влезет. А для перестановок уже что-то придётся мутить, возможно. Хотя не факт.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043264
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
mayton
Есть идея как изящно на Оракле сделать вторую часть. Поиск групп.

Я даже думать про это боюсь. Как только речь заходит о выборках сложнее
Код: sql
1.
select a,b,c from c,d,e where <joins> and x,y,z


У меня начинает болеть голова и охота прилечь.

А как там сделать через поиск групп? Нам же надо сделать перестановки, для этого надо какую-то функцию пилить (по идее можно через pipeline функции). Без перестановок будет всё ооочень медленно, оракл отрубит поддержку к тому времени и база самопроизвольно вырубится.

Вот. Приколись.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create table clusters(
  f1 char(1), // 1 - if true, else null
  f2 char(1), 
  .....
  f20 char(1)
  list varchar2(4000); // "3333,3334...."
);

create bitmap index i1 on clusters(f1);
create bitmap index i2 on clusters(f2);
.....
create bitmap index i20 on clusters(f20);


Далее сюда надо влить либо результат с МайСкл. Либо результат с моего репорта в формате *.json5 образцы которого
я прикладывал.

У кого есть поднятый инстанс Оракла? Проверте pls. Здесь важно чтоб оптимизатор внутри плана указал
что индексы активировались. В ораклах такие штуки эффективны как раз чем больше полей с низкой
кардинальностью в WHERE - тем лучше. Тем биткартовый индекс эффективнее.

Код: sql
1.
WHERE i1='1' and i2='1' and i3='1' ...... 



Далее одним простым запросом мы ищем мета-кластер который покроет все суб-кластеры и выгребем все
билетики в полях List.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043267
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
Alex_Ustinov
какие перестановки? этот этап пройден через побитовое сравнение

Nyet. После побитового у нас только пары записей в которых совпало больше n чисел, дальше из этих n чисел надо делать все уникальные выборки по k чисел. А потом уже группировать эти выборки и считать сколько пар туда попало и каких.
ок, понял. У меня другой алгоритм. Допустим ищем 8-ки
1. Получили пары совпадений из 8-ми и выше
2. далее я делаю гроуп бай по строке совпадения.
3. Допустим получили максимум совпадений в 9-ти чисельной строке.
4. Суть в том что и для 8-ми и для 9-ти чисельного совпадения максимальное кол-во пересечений будет именно в этой строках. именно полученную 9-ку надо разложить в 8-ку
т.е. у меня операция перестановок нужна только при формировании ОТВЕТА

Поэтому я не раскручиваю сразу все пары в нужные 8-ки на этапе (1.), это достаточно сделать после этапа (3)
Т.е. самым накладным у меня является - гроуп бай.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043268
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
надо пробовать в PostgreSQL
там GROUP BY должен по другому
или назовем по другому - надо оптимизировать GROUP BY
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043275
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
надо пробовать в PostgreSQL
там GROUP BY должен по другому
или назовем по другому - надо оптимизировать GROUP BY

Дык чтоб оптимизировать надо знать куда двигаться. Покажи какой был план в MySQL.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043278
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmasterЭтот набор скидываем в комбинаторную функцию, которая выдаёт нам n наборов по 10 чисел. я бы назвал это решением "влоб" (разложением на конечные наборы) на втором этапе, теоретически это же очень много. Допустим ищем не 10 а 7 или 6 чисел.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043281
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

"id""select_type""table""partitions""type""possible_keys""key""key_len""ref""rows""filtered""Extra""1""PRIMARY""<derived2>"null"ALL"nullnullnullnull"4647356""1000""Using temporary; Using filesort""2""DERIVED""o"null"ref""IDX_otvet_XXX""IDX_otvet_XXX""5""const""2323678""1000"null"3""UNION""o"null"ref""IDX_otvet_XXX""IDX_otvet_XXX""5""const""2323678""1000"nullnull"UNION RESULT""<union23>"null"ALL"nullnullnullnullnullnull"Using temporary"
обычный план
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043284
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин... а че оно в виде дерева не показывается? Как в Ораклах или Постгресах.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043296
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не-по-нятненко... А если заменить на


Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT GROUP_CONCAT(t.id), t.strin, COUNT(*) AS xxx FROM 
(SELECT o.id1 AS id, o.strin FROM otvet o WHERE o.XXX = 6
 UNION ALL
SELECT o.id2 AS id, o.strin FROM otvet o WHERE o.XXX = 6) AS t
GROUP BY t.strin
HAVING XXX>=5
ORDER BY xxx DESC, 1;



Стоимость понижатеся?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043305
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

конечно просто UNION это DISTINCT
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40043309
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так может в этом и суть. Давай глянем что возвращает верхняя и нижняя части. Может удастся схитрить.
...
Рейтинг: 0 / 0
25 сообщений из 471, страница 18 из 19
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]