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

где неверное?
поясните ваш алгоритм на пальцах на простом примере
Дано
Наборы чисел
1,2,3,4,8,9
1,2,3,4,6,7
Найти вхождения всевозможных комбинаций из 3 чисел
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040888
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можете добавить сколько угодно строк без этих чисел, чтобы они не совпадали
притяните за уши ваш алгоритм под ответ 22273238
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040891
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мысли вслух.
Про первый алгоритм.
Я приводил например 13 совпадений к 12 .
Потом приводил 12 совпадений к 11
Потом 11 совпадений к 10

А вы предлагаете из 13 сразу сделать 10.
А какая разница?

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

так что мы рассуждаем? у вас нормальный алгоритм.
Только сделать рекурсивную функцию Построение комбинации N-1 чисел из N
для построения 10 из 15 вызывается 14 из 15, потом 13 из 14 и т.д.
Без этого никак проще не сделать. Иначе генерить млрд строк
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040898
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
miltorg,

где неверное?
поясните ваш алгоритм на пальцах на простом примере
Дано
Наборы чисел
1,2,3,4,8,9
1,2,3,4,6,7
Найти вхождения всевозможных комбинаций из 3 чисел


Ну не вхождения нужно искать. Не вхождения.
А строки.
То есть ответ в вашем случае для 2 строк не имеет вообще никакого смысла.
Вы выдумали сами себе задание и сами его решили и радуетесь.

Но задание - найти строки в которых совпало по 9 чисел максимальное количество раз.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040901
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040904
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
покажите где у вас строится комбинации 9 из 15-ти
или 9 из 13
НЕ надо ничего сравнивать. Чисто построение
Или все таки топик надо переносить в форум Perl


Я ведь писал:

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

На 2 последних страницах я рассказываю вам элементарные вещи - разговор с вами прекращаю.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040925
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой смысл в вашей фразе
авторВы выдумали сами себе задание и сами его решили и радуетесь.
если в результате делаете так же
получается вы не можете переложить ваш алгоритм на простую задачу.
авторТо есть ответ в вашем случае для 2 строк не имеет вообще никакого смысла.
я же описал задачу 22273259
и показал решение и ответ здесь 22273238
Только после этого промежуточного решения вы можете суммировать свои максимальные вхождения.
Иного не дано.
Топик наверное опять надо закрывать. Тем более он совершенно не касается MySQL.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040937
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
задача решается за часик простеньким map-reduce кодом. мапер читает строку, шлет на редюсер все комбинации по 8, по 9 .. хоть 200 элементов в ключе (шлет строку, ключ - комбинация). редюсер считает кол-во строк прилетевших по ключу, если их больше нужного - пишет в файл ответ.
потом файлы от редюсера уже можно грузить в базу, в базе отсортировать. если машина всего одна и дохлая, запускать с одим мапером и одним редюсером, если памяти гагабайты map-reduce замечательно распараллелит это дело.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040946
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
H5N1, техники map-reduce предполагают что у тебя не 1 ноутбучек с MySQL, а готовый
и поднятый кластер наподобие AWS-EMR в облаке.

В противном случае эти технологии так-же полезны как и 1 sql запрос с группировкой.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40040967
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
H5N1, техники map-reduce предполагают что у тебя не 1 ноутбучек с MySQL, а готовый
и поднятый кластер наподобие AWS-EMR в облаке.

В противном случае эти технологии так-же полезны как и 1 sql запрос с группировкой.


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

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

В противном случае эти технологии так-же полезны как и 1 sql запрос с группировкой.


база тошнит от того что пишет гигабайты лишнего в undo, redo, ставит блокировки, занимается каким-то порно с кешированием и еще миллионом совершенно ненужным в этой задаче вещами.

Что? Пишет в undo? Ставит блокировки? Где??

Мы-же говорим про запрос Милторга? SELECT ... GROUP BY ...

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

Что? Пишет в undo? Ставит блокировки? Где??

Мы-же говорим про запрос Милторга? SELECT ... GROUP BY ...

Не?

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

Что? Пишет в undo? Ставит блокировки? Где??

Мы-же говорим про запрос Милторга? SELECT ... GROUP BY ...

Не?

не. мы говорим про перл скрипт который в одном потоке в цикле долбит инсертом два дня.

Ну да. Он выбрал MySQL. Автомат калашникова нашего времени.

А вы что ему предлагаете? Сериализацию в Avro? Parquet? Orc? Какой вообще
сценарий по шагам ему надо сделать в том случае чтоб задействовать технологии
BigData. Забегая вперед я скажу что знаю ответ на этот вопрос. Но я считаю
что для его уровня подготовки, MySQL с табличкой - это железный вариант
который он хотя-бы сделает. Медленно. Со скрипом но сделает.

Альтернативный сценрий в данном топике мне представляется просто невозможным.

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

А вы что ему предлагаете? Сериализацию в Avro? Parquet? Orc? Какой вообще
сценарий по шагам ему надо сделать в том случае чтоб задействовать технологии
BigData. Забегая вперед я скажу что знаю ответ на этот вопрос.

если знаете ответ, странные вопросы задаете

mayton

Но я считаю что для его уровня подготовки, MySQL с табличкой - это железный вариант
который он хотя-бы сделает. Медленно. Со скрипом но сделает.

да без шансов. комбинации из 9 он уже точно не дождется долбя в одном потоке.

с map-reduce никакие паркеты не нужны, маперы читают csv файл, на редюсер соответственно уходит text, выплюнет редюсер тоже csv.
в том же стиле явно можно и на спарк решить эту задачу: считать csv файл в датасет, flatMap() раздует датасет (перемножив строки на комбинации, каждая комбинация станет ключем), reduceByKey() посчитает кол-во строк по ключу. теперь это можно отсортировать и обрезать нужный топ. ну может еще по ключу заджоинить на первый датасет, т.к. в топе будут только топовые ключи/комбинации.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041032
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Альтернативный сценрий в данном топике мне представляется просто невозможным.

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

2. Вы считаете что не имеет смысла искать какие то хитромудрые mySQL запросы? - именно это я ожидал от этой темы. Что кто-то умный напишет запрос который всё сделает внутри mySQL.

3. Вы предлагаете решить всё с помощью map-reduce? А оно точно справиться с 300 000 * 300 000 записей. Ведь проблема именно в этом огромном количестве проверяемых строк.
Именно оно и считает уже почти неделю.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041125
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так сколько строк - 600 или 300 тыс?)
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041144
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще недоразумение -
miltorgбольше 15 чисел совпадений - одна штукаиз совпадений 15 получаем 14 - это строковая функция путем последовательного вычеркивания чисел, т.е. получим 15 строк - каким алгоритмом это работает так долго?
miltorg14 чисел - работало 5 мин если должно быть 0,5 сек на одну строку МАКСимум в самом убогом случае?
maytonМы-же говорим про запрос Милторга? SELECT ... GROUP BY ...не дошли мы еще до GROUP BY, это еще в зародыше
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041157
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или вот это
автор14 чисел - работало 5 мин
какой то другой замер?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041163
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

map-reduce - запросто. набросал код, 9 цифр в комбинации, данные взял из этой таблички
https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1332345&msg=22260954

на ноутбуке четыре ядра - 24 секунды и победила одна комбинация
[5, 7, 8, 27, 39, 50, 58, 62, 70] 3

т.е. три строки с такой комбинацией.
верный ответ?

маппер/редюсер
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
public class MiltorgMapper extends Mapper<LongWritable, Text, Text, Text> {
    private static final Logger log = LoggerFactory.getLogger(MiltorgMapper.class);

    @Override
    protected void map(LongWritable key, Text val, Context context) throws IOException, InterruptedException {
        log.info("key: {} val {}", key, val);
        int [] numbers = Stream.of(val.toString().split(";"))
                .mapToInt(Integer::parseInt)
                .toArray();
        Set<Integer> integerSet = Arrays.stream(numbers).boxed().collect(Collectors.toSet());
        TreeSet<Integer> tSetNumbers = new TreeSet<Integer>( integerSet);

        List<Set<Integer>> combinations = generateCombinations(tSetNumbers, 9);
        for (Set<Integer> c: combinations) {
            context.write( new Text(c.toString()), val) ;
        }

    }

    public static List<Set<Integer>> generateCombinations(Set<Integer> from, int size) {
        Set<Set<Integer>> elements = Sets.powerSet(from);
        List<Set<Integer>> possibleCombinations = elements.stream().filter(p -> p.size() == size).collect(Collectors.toList());
        return possibleCombinations;
    }

}

public class MiltorgReducer extends Reducer<Text, Text, Text, Text> {
        private static final Logger log = LoggerFactory.getLogger(MiltorgReducer.class);

        @Override
        protected void reduce(Text key, Iterable<Text> values, Context context) throws IOException,InterruptedException  {
            Integer matches = 0;
            for (Text value :values) {
                matches++;
            }
            if (matches>2) {
                context.write(new Text(key.toString()), new Text(matches.toString()));
            }
    }

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

не похоже даже близко, там 10-ки 3 раза как я помню
5-7-8-15-22-23-27-34-37-39-40
а девяток из этих 10 чисел будет гораздо больше
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40041189
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по ссылке
5_7_15_22_23_27_34_37_39_40

а вообще 11 чисел совпадает 3 раза
5-7-8-15-22-23-27-34-37-39-40
так что 9-ток там куча (110штук?)
и здесь все жестко (-:) Вид ответа
...
Рейтинг: 0 / 0
25 сообщений из 471, страница 3 из 19
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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