
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
14.09.2018, 10:19
|
|||
|---|---|---|---|
|
|||
Как ускорить сравнение огромных таблиц |
|||
|
#18+
Привет! У меня есть 2 таблицы, одна на 300млн. строк (ТАБ1) и вторая на 20млн. строк (ТАБ2) Я написал команду по нахождению совпадений: select * from tab1, tab2 where tab1 = tab2 В обеих таблицах по одной колонке с данными типа "hC98hvW374hoEd7V8d", при создании таблиц в настройках ставил маркеры NN и Binar, формат VARCHAR (100). Сравнение запустилось, но вот уже прошло больше 1 часа, но процесс не заканчивается, и хз когда закончится. И при чем ресурсы не затрачиваются, ОЗУ свободно ещё 30гб, проц холодный, нагрузка 10-17%, 2 gtx1080ti вообще прохлаждаются на 0% загрузки. В общем как ускорить процесс, может можно как-то настроить чтобы ресурсов больше затрачивалось? Может есть у кого какие идеи? Потому что скорость слишком мала, файл на 20млн. строк тестовый, закинул посмотреть найдет ли три заранее спрятанных совпадения. А так на очереди файл под 1 МЛРД. строк, но с такой скоростью пока что это не имеет смысла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2018, 10:27
|
|||
|---|---|---|---|
Как ускорить сравнение огромных таблиц |
|||
|
#18+
mordegar2 gtx1080ti вообще прохлаждаются на 0% загрузки GPU-то тут при чём? mordegarпроц холодный, нагрузка 10-17% Суммарно по ядрам? Запрос-то однопоточный. mordegarОЗУ свободно ещё 30гб А базе в конфиге объяснили, что ей можно этим пользоваться? Ну и что важнее - индексы-то есть? mysql умеет только nested loops для join, что без индекса вечности подобно, на каждую строку левой таблицы перебирать всю правую таблицу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2018, 10:36
|
|||
|---|---|---|---|
|
|||
Как ускорить сравнение огромных таблиц |
|||
|
#18+
Melkij на каждую строку левой таблицы перебирать всю правую таблицу. Мне нужно чтобы каждую строку из файла 20млн. строк проверил на совпадения в файле с 300 млн. строк. Как меня уверяли, что база sql легко с этим справится за пару минут, и ничего там настраивать не надо особо, что такое ключи и прочее я хз, мне сказали поставить флажки и выбрать варчар (100), дальше типа по команде пойдет сравнение с богоподобной скоростью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2018, 10:37
|
|||
|---|---|---|---|
|
|||
Как ускорить сравнение огромных таблиц |
|||
|
#18+
не ключи а индексы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2018, 10:47
|
|||
|---|---|---|---|
|
|||
Как ускорить сравнение огромных таблиц |
|||
|
#18+
как и куда эти индексы ставить в workbenchе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2018, 10:55
|
|||
|---|---|---|---|
Как ускорить сравнение огромных таблиц |
|||
|
#18+
mordegarкак и куда эти индексы ставить в workbenchе? создали таблицы, залили данные, прописали индексы именно в таком порядке заливать в таблицу с индексами в разы дольше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2018, 11:00
|
|||
|---|---|---|---|
|
|||
Как ускорить сравнение огромных таблиц |
|||
|
#18+
Для обеих таблиц нужно делать индексы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2018, 11:01
|
|||
|---|---|---|---|
Как ускорить сравнение огромных таблиц |
|||
|
#18+
mordegarЯ написал команду по нахождению совпадений: Код: sql 1. 2. Должно быть Код: sql 1. 2. mordegarДля обеих таблиц нужно делать индексы?Конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2018, 11:09
|
|||
|---|---|---|---|
|
|||
Как ускорить сравнение огромных таблиц |
|||
|
#18+
Akina, а индексы уникальные ставить? У меня все значения в строках уникальные, в рамках одной таблицы совпадений нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2018, 12:12
|
|||
|---|---|---|---|
Как ускорить сравнение огромных таблиц |
|||
|
#18+
mordegarиндексы уникальные ставить?Если модель требует уникальности - да, иначе лучше не надо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2018, 12:50
|
|||
|---|---|---|---|
Как ускорить сравнение огромных таблиц |
|||
|
#18+
mordegarДля обеих таблиц нужно делать индексы?я бы сделал только у большей таблицы. И в запросе меньшую таблицу сделал ведущей, а большую ведомой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2018, 12:59
|
|||
|---|---|---|---|
|
|||
Как ускорить сравнение огромных таблиц |
|||
|
#18+
miksoftя бы сделал только у большей таблицы. И в запросе меньшую таблицу сделал ведущей, а большую ведомой. А это как сделать, я имею ввиду ведущую или ведомую. Большую таблицу поставил на процесс индексирования, вот уже час идет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2018, 13:31
|
|||
|---|---|---|---|
Как ускорить сравнение огромных таблиц |
|||
|
#18+
mordegar , а каково ожидаемое количество записей из этого запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2018, 13:58
|
|||
|---|---|---|---|
|
|||
Как ускорить сравнение огромных таблиц |
|||
|
#18+
Akina, ровно 3, специально их туда внедрил для теста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2018, 14:05
|
|||
|---|---|---|---|
|
|||
Как ускорить сравнение огромных таблиц |
|||
|
#18+
Пока ещё идет индексация большой таблицы. В принципе мне без разницы каким способом все это делать. Мною на другом ресурсе был поставлен вопрос о том, с помощью каких ресурсов можно сделать перебор на совпадения в текстовых файлах от 30 до 100 Гб веса, мне посоветовали SQL, поэтому данный способ и проверяю. Мне в целом и Excel подошел бы по задаче, но у него лимит 1 млн. строк, это где то 40Мб. Если с sql не получится, даже хз какие ещё варианты использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2018, 14:11
|
|||
|---|---|---|---|
|
|||
Как ускорить сравнение огромных таблиц |
|||
|
#18+
Т.е. для ясности, у меня есть файл с 300 млн. значений - базовые, т.е. они в стоке будут всегда. А есть постоянно пополняющийся файл, он может в конечном виде и 1 и 2 млрд. значений иметь, но это не суть, главное своевременно, можно даже по частям, эти значения проверять на совпадения в стоковом файле. И вроде задача то не самая сложная по структуре, но как на практике оказалось, не то что мощностей не хватает, а именно искусственные везде какие-то лимиты, ограничения, и вот так просто не получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2018, 14:15
|
|||
|---|---|---|---|
Как ускорить сравнение огромных таблиц |
|||
|
#18+
mordegarmiksoftя бы сделал только у большей таблицы. И в запросе меньшую таблицу сделал ведущей, а большую ведомой. А это как сделать, я имею ввиду ведущую или ведомую. Большую таблицу поставил на процесс индексирования, вот уже час идет.Если индекс будет только один, то оптимизатор сам определит таблицу с индексом в ведомые. Проверить можно в плане запроса. Если план оптимизатора не устраивает, то порядок соединения таблиц можно указать в запросе явно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2018, 14:23
|
|||
|---|---|---|---|
Как ускорить сравнение огромных таблиц |
|||
|
#18+
mordegarВ обеих таблицах по одной колонке с данными типа "hC98hvW374hoEd7V8d"Это действительные данные, или некая хитрожопая контрольная сумма? В теории для такого типа запроса на таких объёмах данных можно создать дополнительное хранимое вычисляемое поле хэша, имеющего целочисленный тип, его проиндексировать, и по нему связывать (вернее, связывать по hash(t1f1)=hash(t2.f2) and t1.f1=t2.f2 ). Но вот незадача - в MySQL есть либо CRC32, чего маловато на таких объёмах, либо MD5, который, наоборот, великоват. А CRC64, который тут был бы в самый раз - увы... хотя никто не запрещает взять, к примеру, первую (или вторую) половину MD5 и преобразовать его в BIGINT. Вероятность коллизии будет достаточно низкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2018, 14:30
|
|||
|---|---|---|---|
|
|||
Как ускорить сравнение огромных таблиц |
|||
|
#18+
Akina, Это действительные данные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2018, 22:10
|
|||
|---|---|---|---|
|
|||
Как ускорить сравнение огромных таблиц |
|||
|
#18+
Приветствую. Если исходная информация - текстовые файлы, и проверку надо сделать один раз, возможно, окажется проще: cat file1 file2 | sort | uniq -d ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2018, 22:25
|
|||
|---|---|---|---|
Как ускорить сравнение огромных таблиц |
|||
|
#18+
NIK.2017Приветствую. Если исходная информация - текстовые файлы, и проверку надо сделать один раз, возможно, окажется проще: cat file1 file2 | sort | uniq -dСоединять нужно по одному полю, а не по всей строке, насколько я понял задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2018, 23:46
|
|||
|---|---|---|---|
|
|||
Как ускорить сравнение огромных таблиц |
|||
|
#18+
miksoftСоединять нужно по одному полю, а не по всей строке, насколько я понял задачу. Да, но пока жду что получится с индексом, уже 12 часов пыхтит, вроде недолго осталось но места конечно он мне ппц как занял в ходе данной процедуры. Завтра отпишусь, что получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.09.2018, 23:54
|
|||
|---|---|---|---|
Как ускорить сравнение огромных таблиц |
|||
|
#18+
Если правильно понял, каждое поле имеет уникальный индекс (ключевое?), а значит, в принципе, вполне может сработать сравнение файлов, состоящих из одного этого поля. Другой вопрос - алгоритм. Каждое с каждым сравнивать - реально долго. Если же строки файлов заранее отсортированы, тогда можно составить довольно простой алгоритм в один проход, который прочитает по первой строке из каждого файла, сравнит значения, а далее будет читать и сравнивать строки из того файла, где значение оказалось меньше. При равенстве - вывод значения. Далее прочитать по строчке и пошли по кругу, пока какой-то файл не закончится. Тут, скорее, вопрос реализации. Возможно СУБД не самое подходящее средство для такой задачи, хотя, отсортированную выгрузку по каждому полю вполне можно сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.09.2018, 00:32
|
|||
|---|---|---|---|
Как ускорить сравнение огромных таблиц |
|||
|
#18+
mordegar, Покажите DDL таблиц и индекса, который пытаетесь создать. Если поле для соединения уникально, то лучше было бы сначала его сделать первичным ключом, а потом данные в таблицу заливать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.09.2018, 02:18
|
|||
|---|---|---|---|
Как ускорить сравнение огромных таблиц |
|||
|
#18+
mordegarВ обеих таблицах по одной колонке с данными типа "hC98hvW374hoEd7V8d", при создании таблиц в настройках ставил маркеры NN и Binar, формат VARCHAR (100). а они что, разных размеров идут? и вы конечно же делаете индекс по всей длине? там 10 чаров хватит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&mobile=1&tid=1829614]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
149ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 497ms |

| 0 / 0 |
