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

А на mySQL это получится?


Конечно. Там же примитивные запросы без всяких bit_count. Только join с группировкой и все!!!


Для начало надо исходные данные положить в таблицу
Код: sql
1.
create table #Temp(Dt date, nv tinyint, primary key(dt,nv), index IX_nv(nv,dt))



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
2007-05-31	13
2007-05-31	14
2007-05-31	15
2007-05-31	17
2007-05-31	21
2007-05-31	26
2007-05-31	29
2007-05-31	31
2007-05-31	32
2007-05-31	34
2007-05-31	38
2007-05-31	39
2007-05-31	40
2007-05-31	42
2007-05-31	44
2007-05-31	51
2007-05-31	60
2007-05-31	63
2007-05-31	67
2007-05-31	76
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042927
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__,

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

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

это путь прошлой темы, там на 5000строк раскручиваем до 1млрд?


Да, но на этих данных миллиард не получился, всего лишь - 319139 строк с 10-ками.

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

Началось...

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

10-ки я расчитал за 1 день.
9-ки считало - неделю
А ещё нужны 8-ки, 7, 6-ки

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

Началось...

Ответа нет получается опять?


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

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

10-ки я расчитал за 1 день.
9-ки считало - неделю
А ещё нужны 8-ки, 7, 6-ки

Плюс к ним будут каждый день дополнятся строки.
вот чудак-человек...
зачем тогда делать 10-ки потом 9-ки ..... 6-ки если надо раз сделать самый минимум чисел, допустим 6, слить в таблицу и из нее получить и 6-7-8-9-10-ки
или залить >=10 затем подливать в таблицу =9 =8 =7 =6 совпадений чтобы было быстрее

затем только 1 новую строку переводить в биты и также искать вхождения >=6 и добавлять в "таблицу 1-го прохода"
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042937
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в 9ках 288тыс по данным miltbase1.txt
/если я правильно запомнил/
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042940
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

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

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

какой у вас ноутбук - сколько RAM не может быть чтоб <4G

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

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

Я вот только не понял, similar-chromosome-lookup-1.0.jar , он действительно делает 25 млн. попарных сравнений каждого с каждым, или там что-то типа градиентного спуска? Можно им получить одну или все дуплицированные подпоследовательности длиной 9, которые не являются частью более длинных? Если да, то уверую окончательно (хотя этот метод квадратичный по отношению к числу записей в исходной таблице, а брутфорс - линейный).
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042946
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor Ichalov,все дуплицированные подпоследовательности длиной 9, которые не являются частью более длинных?ну там так и есть, судя по предоставленным кускам с выхода.
Т.е. 9 -ки не входят в 10 ки не входят в 11 и т.д.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042948
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вот только не понял, similar-chromosome-lookup-1.0.jar , он действительно делает 25 млн. попарных сравнений каждого с каждым, или там что-то типа градиентного спуска?

Он - действительно квадратичный. Никакого градиентного спуска нет. Да. Делает 5000 * 5000 / 2 = 12500 сравнений.
Деление на 2 потому что все пары не нужны а только верхняя треугольная часть матрицы пар.

Но ваш вопрос касается чего? Генерации индекса? Или операции поиска.

Давайте просто разделим эти два понятия. Андрей в начале говорил что база будет неизменна. И лишь периодически
владелец будет делать в нее insert новых хромосом (или лотерейных билетов).

Тоесть. Если у нас уже будет построен по ней индекс - то наша задача сводится только к периодической вставке в него
новых строк. Тоесть я рассуждаю как DBA в условиях эксплуатации инфо-системы которая уже инициализирована.
Моя идея - предварительная подготовка данных таким образом чтобы быстро обслужить входящие запросы клиента.

Все прочие цели - такие как выдать на экран "ВСЁ" я считаю ложными. Они являются побочным эффектом неправильного
ТЗ. Мне сложно себе представить как нормальный человек может взглядом охватить 5000 векторов целых чисел
(или не дай бох 1 000 000 000 кластеров). Поэтому я акцентирую внимание на том что нас интересует не
текстовые файлы. И даже не наполненные таблички MySQL. А информационная система, обладающая
способностью быстро дать отклик на нужный лаконичный запрос от заказчика. Или на несколько типов запросов.

Можно им получить одну или все дуплицированные подпоследовательности длиной 9, которые не являются частью более длинных? Если да, то уверую окончательно (хотя этот метод квадратичный по отношению к числу записей в исходной таблице, а брутфорс - линейный).

Если вы хотите получить например все над-кластеры которые покрывают суб-кластер 5,6,7,8,9,10,11,12,13 (к примеру)
- то отвечаю - ДА. Можно. Думаю что займет меньше секунды. Как и многие другие участники топика я думал об
оптимизации и заложил такой расчет что хромосома длиной до 100 элементов у меня будет занимать не более
128 бит или 2х64 битных числа в формате long.

Если вы смотрели в код то видели что ключом в хеш-таблице является BitSet. Это обобщенный вариант такой пары.
Безразмерный.

Код: java
1.
Map<BitSet, Set<Integer>> clusters = new HashMap<>();



И дополняя свой ответ. Когда мы получим списки над-кластеров - то мы получим и сами хромосомы. Они являются
value-s по отношению к ключам.

Более раняя (неопубликованная) версия кода содержала работу над сырыми целыми числами (Long)

(фрагмент)

Код: 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.
   List<Long> verticalLeft = new ArrayList<>(INITAL_SEGMENT_ITEMS);
        List<Long> verticalRight = new ArrayList<>(INITAL_SEGMENT_ITEMS);
        //List<String> s = new ArrayList<>(INITAL_SEGMENT_ITEMS);

        stream.forEach(line -> {
            long leftBitmap = 0L;
            long rightBitmap = 0L;

            int[] arr = Arrays.stream(line.substring(line.indexOf('\t') + 1).split(" "))
                    .skip(1)
                    .mapToInt(Integer::valueOf).toArray();

            for (int i = 0; i < arr.length; i++) {
                int item = arr[i];
                if (item > 128) {
                    throw new RuntimeException("Unsupported chromosome gen > 128!");
                } else if (item < 64) {
                    leftBitmap |= (1L << (item - 1));
                } else {
                    rightBitmap |= (1L << (item - 1 - 64));
                }
            }
            verticalLeft.add(leftBitmap);
            verticalRight.add(rightBitmap);
            //s.add(line);
            //System.out.printf("%016X : %016X \n", leftBitmap, rightBitmap);
        });



Но я заметил что если заменить пару этих чисел на структуру BitSet почти ничего не теряю в performance - но приобретаю надежность
и бесконечную масштабируемость по размеру вектора хромосомы.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042949
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
Victor Ichalov,все дуплицированные подпоследовательности длиной 9, которые не являются частью более длинных?
ну там так и есть, судя по предоставленным кускам с выхода.
Т.е. 9 -ки не входят в 10 ки не входят в 11 и т.д.не немного не так.
если есть совпадение из 10 чисел в 4 строках, то этих совпадений нет в девятках.
т.е в каждой паре - максимальное совпадение
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042953
Victor Ichalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

5000 * 5000 / 2 = 12500000 сравнений

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

Но ваш вопрос касается чего?

Я на самом деле просто хочу понять, есть ли там такие последовательности (дуплицированные, длиной 9, не входящие в более длинные). В 22276737 вроде нет таких, самые короткие - 10.
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042955
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте я выложу полный отчот. Какая файловая шара вам доступна?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042956
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот поиск по like and like в 10 000 000 идёт 5 сек. а сравнение двух длинных чисел намного быстрее
так в чем проблема?
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042957
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Давайте я выложу полный отчот. Какая файловая шара вам доступна?
гугл диск всем доступен
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042958
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

напиши лайк чтобы множества с дырками искать.
т.е. чтобы в ЛАЙК %4% %5% %66% не попало 34 35 66 и 44 45 66 и т.д.
единственное - держать числа в маске
...
Рейтинг: 0 / 0
Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
    #40042959
H5N1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Все выкладываю. Берите. Пользуйтесь. Работает 1.5 секунды на моём железе. Это при том что JVM - холодная
на таком старте.

Это работающий и самодостаточный код. Нужна Java-11 и maven сборщик для сборки с сорцов.

Бинарь я тоже приложу чтоб сразу запускать.

интегрейшен теста так и нет, беру mitbase.txt, 66 записей с пятью попаданиями в отчете нет.
перепроверяю файл
Код: plaintext
1.
2.
3.
4.
5.
6.
cat miltbase.txt  | grep "1 2 3 4 5 6 7 8 9 10 11 12"
14.07.2016      1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
15.07.2016      1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 26 27 28 29 30
16.07.2016      1 2 3 4 5 6 7 8 9 10 11 12 13 14 35 36 37 38 39 40
17.07.2016      1 2 3 4 5 6 7 8 9 10 11 12 13 44 45 46 47 48 49 50
18.07.2016      1 2 3 4 5 6 7 8 9 10 11 12 53 54 55 56 57 58 59 60
...
Рейтинг: 0 / 0
25 сообщений из 471, страница 16 из 19
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Считает слишком долго. Уже 2 сутки. Как оптимизировать скорость?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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