powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
25 сообщений из 471, страница 14 из 19
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042828
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Ichalov
miltorg
То есть вы делали задание под себя, а не по заданию?


Вообще, я отвечал на вопрос "Как оптимизировать скорость?": "Вам лучше всего будет переписать perl скрипт ... Но это сложно написать без рабочего тестового стенда." (т.е. без реалистичных данных которые разложены в таблицы со структурой, требуемой скриптом)

Что касается "Могу предложить решение чисто на MySQL ...", то я его сделал для кросс-проверки что из тестовых данных действительно получается требуемое, оно выглядело подходящим, поэтому я его опубликовал именно чтобы можно было свериться с другими решениями, найти причины расхождений, если они есть. Я тут вижу проблему скорее в том что по тестовым примерам не очевидно что требуется найти также совпадения подпоследовательностей с разрывами и в общей массе написанного также сложно найти где это требование явно указано. (Кстати, оно точно нужно заказчику? Я в биоинформатике не очень разбираюсь, но уже оптимизировал что-то подобное и там вроде нужно было сравнивать только непрерывные последовательности. )


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

Я не против хадупа. Я его использовал в AWS. Просто решение для Андрея надо упростить так чтобы он мог
хотя-бы это standalone запустить на любой тачке где установлена JRE. Скопировать и запустить шелл или бат-скриптик.

я в курсе. потому и положил 3.7 мб папку с заглушкой от хадупа.
jar файл, 3.7 мб папка от хадупа и батник. ну и jre нужно. все, больше ничего не требуется.

mayton
Почему должно быть 66 ?


потому что из 12 символов можно построить 66 хромосом диной 10 символов. потратьте уже 2 минуты на изучение правильного ответа
https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1332994&msg=22276120

Alex_Ustinov

это по miltorg1.txt и есть, хотите проверьте

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

Я вполне нормально решал эту задачу частями. Но я упёрся в то, что мне нужно сравнить каждую строку с каждой просто получить количество совпадений и сами совпадения. И на Перл это занимало очень много времени - неделю.

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

комбинации по 10 из 12 = 12!/(12-10)!*10! = 66

и там 5 строк совпадений

3333-3334-3335-3336-3337 5 1 2 3 4 5 6 7 8 9 10 11 12

нумерация у меня с 1 по файлу miltorg.txt

Во первых это не комбинации а сочетания. Формула n! / (n - k)! * k! это подтверждает.

Или если вы взяли перевод английского термина permutation (перестановки/комбинации) - то надо тогда добавить что
это permutation with repetitions.

В задаче Андрона-Милторга я создаю кластер как только есть более чем 1 хромосома имеющая более чем 10
совпадающих полей. Вот и вся суть моего алгоритма. Попарное сравнение всех.

По поводу той магической пятёрки которая там используется.
Код: sql
1.
3333-3334-3335-3336-3337 5 1 2 3 4 5 6 7 8 9 10 11 12



Надо актуализировать. По новому файлу miltbase1.txt

Код: sql
1.
2.
3.
4.
cat -n miltbase1.txt | grep -F "1 2 3 4 5 6 7 8 9 10 11 12" 
  3335	16.07.2016	1 2 3 4 5 6 7 8 9 10 11 12 13 14 35 36 37 38 39 40
  3336	17.07.2016	1 2 3 4 5 6 7 8 9 10 11 12 13 44 45 46 47 48 49 50
  3337	18.07.2016	1 2 3 4 5 6 7 8 9 10 11 12 53 54 55 56 57 58 59 60



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

Ну .. интеграционные мы пока отложим. Они предполагают минимум несколько взаимодействующих
модулей системы. У меня - просто процедура main. И интегрироваться там несчем.

странновастые мягко говоря у вас представления.
ладно, я утомился. топик в какой-то чат малолеток превратился. я говорю на этот вход должно быть 66 строк выхода, ноль внимания.
вот мой джарник, собранный на java 15 и фолдер с заглушкой от хадупа. как запустить видно в bat файле. вывод параметризован - или в вашем стиле или тот что хотел miltorg.
https://filebin.net/tngol6xocmvfzm7l/app1.zip?t=k7k0oin1

по мне так надо нормальный пример генерить, где и 19 совпадений встретиться могут, ну и инпут побольше, хотя бы 10к, ведь если пару раз в день строка добавляется ...


Спасибо.
47МБ - многовато для "простенького задания" - как все тут говорили месяц назад.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042835
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это полное решение?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042837
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1

проверил, там уже нет тех 66, что были miltoirg.txt. милторг собственно для этого и сделал miltorg1.txt, что бы нельзя было генерить перестановки, не заглядывая в инпут файл.

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

во-первых,
я не понял, о чем вы. Не надо меня учить как что называется. Сочетания - подраздел комбинаций, конкретно перестановок

авторЕсть только 3 хромосомы содержащие то вхождение. какое "то" вхождение. Автор изменил задание. Как можно результат из прошлого анализировать по новым данным.

ЗАДАЧА1 - miltorg.txt3333-3334-3335-3336-3337 5 1 2 3 4 5 6 7 8 9 10 11 12

ЗАДАЧА2 - miltorg1.txt (другой набор)3332-3333-3334-3338 4 3 5 7 9 11 17 20 22 23 24

зачем показывать знание grep это здесь не надо.
вхождение 10 чисел может быть с "дырками внутри", если так понятнее

какие ХРОМОСОМЫ?)) это Лотерейные билеты!
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042841
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

В задаче Андрона-Милторга я создаю кластер как только есть более чем 1 хромосома имеющая более чем 10
совпадающих полей. Вот и вся суть моего алгоритма. Попарное сравнение всех.

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

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

вхождение 10 чисел может быть с "дырками внутри", если так понятнее

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

Но это-же глупо правда? Дело даже не в том что миллиард поместистя или нет. А будет ли эта структура
полезна для поиска или избыточна. Я - как dba - думаю о поисковыз структурах.

Зачем нам все сочетания компонентов кластера если есть корневая компонента которая в себя просто включает
всех детей?

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

я не думал, что вы еще не врубились
вычеркиваем по 2 цифры для ОТВЕТА
Alex_Ustinov
miltorg,

к чему этот цирк?
получено решение из 12 чисел
циклуйте вычеркивая по 2 числа ИЗ 12 получите 12!/(12-10)!10! = 66 комбинаций
1 2 3 4 5 6 7 8 9 10 11 12

авторПриведите хоть пару десятков.

вот 6 строк
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
    3 4 5 6 7 8 9 10 11 12
1    4 5 6 7 8 9 10 11 12
1 2    5 6 7 8 9 10 11 12
1 2 3     6 7 8 9 10 11 12
1 2 3 4     7 8 9 10 11 12
1 2 3 4 5     8 9 10 11 12

а остальные 60 я доверяю сделать самому) как вы любите, циклами
да и найденные сочетания из 12 ти чисел в исходном файле идут не подряд
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042855
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так. Нашел еще один баг с нумерацией. Я рапортую о хромосомах-лотерейных-билетах в нумерации с 0
как принято в Java. А в топике насколько я понял приводится нумерация с 1 как основа для тестирования.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042856
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я заливаю исходные данные в табл с автоинкрементом. Поэтоиу у меня с 1 .
В любом случае +-1 для сверки найти можно, это не суть
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042857
Victor Ichalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miltorg
У вас случайно нет решения этого на mySQL ?


Ну я думаю его можно сделать, например чтобы сравнить скорость MySQL с hadoop на этой задаче. Одна из проблем заключается в том что оно тоже может будет исполняться слишком долго и таким образом нельзя будет показать что оно вообще работает (с другой стороны, вряд ли больше нескольких часов для подпоследовательностей длиной 9).

И SQL очень непрактичен для таких вещей:
1. Даже переделать мои запросы чтобы они принимали и пробел и подчёркивание в качестве разделителей уже проблема
2. Как-то сигнализировать, что встретились входные данные больше 20 элементов - тоже
3. Если у perl кончится память, то он просто остановится - тоже неприятно, но хотя бы можно заметить. А MySQL вероятно молча продолжит выполнение, только намного медленнее.


Просмотрел сейчас топик "Как отсортировать 1 миллиард записей?" :) Может вам вообще лучше вернуться к тому решению когда была эта большая таблица в которой надо было найти дубликаты (для этого её не обязательно сортировать). C помощью group_concat() и group by ... having count(*) > 1 как в моих запросах. Проблема в том что для этого требуется память. Если бы там было мало различных значений - то памяти нужно немного. А если там почти все записи - разные, то их все желательно разместить в памяти чтобы была максимальная скорость поиска дупликатов. Память для этого в MySQL выделяется примерно так:
Код: sql
1.
2.
set tmp_table_size = 64*1024*1024*1024;
set max_heap_table_size = 64*1024*1024*1024;



64 гигабайт наверное должно хватить для вашего случая (но нужно экспериментировать, я в MySQL такого не пробовал по вышеуказанным причинам).
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042861
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Ichalov,

нормально работает и с 2-3G буфера без MEMORY
(нормально по сравнению с несколькими сутками у автора)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042862
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Ichalov

64 гигабайт наверное должно хватить для вашего случая (но нужно экспериментировать, я в MySQL такого не пробовал по вышеуказанным причинам).

Да дело не в гигабайтах. Эта задача похожа на тестовое задание после собеса. Но оно - с хитринкой.
С намёком на комбинаторный взрыв. И в таких задачах обычно идеи перебрать всё. Или всё брутфорсить - это
неправильные идеи. Да они сработают для 10 из 12. Но что мы будем делать при удвоении исходных
данных в разрядности? Просто докупить памяти - уже не вариант. Достигнем пределов Бреммермана?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042863
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Простенькая задачка" перешла в разряд нерешаемых...
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042864
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

так это всегда в конечном счете будет "перебор каких-то значений" (не пойму зачем вставлять непонятные словени типа БРУТФОРС)
любой SELECT INSERT UPDATE - перебор
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042865
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg
"Простенькая задачка" перешла в разряд нерешаемых...
давно решена, вам осталось в Perl
зацикловать ответ :
Код: sql
1.
2.
3.
4.
5.
/* получаем строку решения*/
фетчим
циклуем до нужного кол-ва циферек
"уважаемый заказчик, числа " /* такие то */ встречаются в строках /* номера строк */вот столько /* число */ раз
кнццкл
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042866
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы что? Не решили задачу даже для первого прохода?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042868
Victor Ichalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton
Но что мы будем делать при удвоении исходных данных в разрядности?


Ну это сильно зависит от данных. Если у них грубо говоря энтропия низкая (много повторений одних и тех же значений) - то всё и прекрасно пройдёт. А если, например, менеджер может потом подсунуть этой же программе хаотические данные чтобы показать что она тормозит и не работает - то что тут сделаешь?

mayton
всё брутфорсить - это неправильные идеи


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

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


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