powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Медленная работа поиска MySQL .
23 сообщений из 23, страница 1 из 1
Медленная работа поиска MySQL .
    #39580273
chita199853
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть проблемы такова : Имеется текстовый документ ,в нем примерно 2млрд строк ,нужно это все перенести в БД ,для удобного и быстрого поиска по этой Бд .
Создаю БД таким запросом :
Код: plsql
1.
2.
3.
4.
5.
6.
7.
CREATE DATABASE IF NOT EXISTS TEST_DB;

CREATE TABLE IF NOT EXISTS TEST(
 id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
 data_1 VARCHAR(255) NOT NULL,
 data_2 VARCHAR(255) NOT NULL
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;


Т.е в итоге получалась таблица с 3 колонками: id,data_1,data_2 . Индексация была на столбце id.
После чего загружал в таблицу значения через CSV using LOAD DATA. Тип таблиц пытался использовать и MyISAM и InnoDB.
Но при поиск через запрос :
Код: plsql
1.
SELECT * FROM TEST_DB.TEST WHERE data_1="Vasy1337"


Идет бесконечный поиск ,и в итого не выдает никаких результатов вовсе.

Хотелось что бы вы мне указали на мои ошибки ,или подсказали оптимальный вариант . Уже достаточно много прогуглил ,прочитал ,но решения так и не нашел .
P.s. Железо относительно не плохое , БД на SSD.
...
Рейтинг: 0 / 0
Медленная работа поиска MySQL .
    #39580281
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос 1: У Вас 2 млрд. записей. При этом Вы выбираете для поля ID тип INT, для которого 2ккк - это на пределе... почему? объявили бы хотя бы UNSIGNED...

Вопрос 2: Зачем вообще нужен ID?

Вопрос 3: Как Вы думаете, каким образом сервер будет искать записи, соответствующие условию? правильно - читать все записи и искать... т.е. ему, чтобы выполнить запрос, нужно прочитать и обработать все сколько-то там гигабайтов данных таблицы... неудивительно, что ему плохеет. Тем более если результат ожидается объёмный - его же до выдачи надо где-то хранить...

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

Для того, чтобы получить вменяемый результат (поиск за удовлетворительное время), необходимо на таких объёмах использовать иные средства индексации. Как минимум это полнотекстовый индекс и соответственно полнотекстовый поиск - но думаю, что на таких объёмах и ему не будет хорошо...

Я бы предложил рассмотреть внешние средства индексации и поиска. Типа Sphinx, Elasticsearch и аналогичные.
...
Рейтинг: 0 / 0
Медленная работа поиска MySQL .
    #39580331
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chita199853,

Для показанного поиска проще оставить данные в текстовом файле.

Описывайте задачу целиком, а не вашу попытку ее решения.
...
Рейтинг: 0 / 0
Медленная работа поиска MySQL .
    #39580343
stanilar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересный встречный вопрос: а Вы данные в базу заносите построчно или по словам?
...
Рейтинг: 0 / 0
Медленная работа поиска MySQL .
    #39580346
chita199853
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

Зада :
Загрузить все данные в БазуДанных , для последующего поиска по ней...
...
Рейтинг: 0 / 0
Медленная работа поиска MySQL .
    #39580347
chita199853
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stanilar,

Построчно .
...
Рейтинг: 0 / 0
Медленная работа поиска MySQL .
    #39580357
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chita199853Загрузить все данные в БазуДанныхЗачем именно в БД? Почему не просто текстовый файл, почему не другие структуры?
chita199853для последующего поиска по нейКакой именно должен быть поиск? По равенству строки? По словам? По вхождению подстроки? По маске? С учетом морфологии или без? Если с учетом, то на каком языке? А что с кодировкой?

Эти и масса других вопросов возникают из-за того, что вы пытаетесь описать не задачу, а вашу попытку ее решения.

Есть ощущение, что это учебная задача, которую нужно сделать так только потому, что так сказал преподаватель.
...
Рейтинг: 0 / 0
Медленная работа поиска MySQL .
    #39580362
chita199853
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,
Есть 2 файла.
1)txt файл , где находятся строки значение_1:значение_2 .
2)txt файл ,в котором находятся строки : значение_1 .

Мне нужно брать значение_1 из второго файла ,и искать в его в первом файле . В случае если совпадение есть ,в результирующий файл , пусть это будет Результат.txt, записывается строка из первого файла ,т.е значение_1:значение_2 .
Сложность в том ,что первый файл весит под 100гб .
Надеюсь доходчиво расписал .
...
Рейтинг: 0 / 0
Медленная работа поиска MySQL .
    #39580365
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chita199853,

Пара вопросов.
Задача разовая или периодическая?
Много ли строк во втором файле?
Если, всё же, задача разовая, а во втором файле строк немного, то grep категорически не годится?
...
Рейтинг: 0 / 0
Медленная работа поиска MySQL .
    #39580368
chita199853
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,
Тут скорее периодическая .Т.к есть второй вариант работы. Принцип остается такой же как и раньше ,но во втором файле уже строка вида Значение_1:Значение_2 ,так же как и в 1 файле. Поиск по прежнему идет по Значение_1 ,но уже если его НЕ находит ,то добавляет эту строку(значение_1:значение_2 из 2 файла) в первый файл.
Много тавтологии ,но вроде бы доступно.
...
Рейтинг: 0 / 0
Медленная работа поиска MySQL .
    #39580373
chita199853
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,

Строк во втором файле не много . Всегда меньше 1млн.
...
Рейтинг: 0 / 0
Медленная работа поиска MySQL .
    #39580375
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vklegrepВот да, grep мне пока больше всего нравится.
...
Рейтинг: 0 / 0
Медленная работа поиска MySQL .
    #39580453
stanilar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переносы учитываются?
...
Рейтинг: 0 / 0
Медленная работа поиска MySQL .
    #39580492
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделайте индекс по первым 3м буквам и по остальным буквам, да и всё
первые 3 буквы от 2 ярдов оставят 100к, а по ним быстро найдёт даже без индекса
т.е. как-то так: KEY (col1(3),col2(10))
и когда текст вводите, то через JS ждите 3х букв, только потом ищите, а также пауза между вводом и поиском должна быть 1с, т.е. сначала должны остановиться печатать, а потом уже поиск идёт
...
Рейтинг: 0 / 0
Медленная работа поиска MySQL .
    #39580693
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78индекс по первым 3м буквамЗависит от того, что на самом деле в "Значение_1".
Если там что-то типа "long_text_label1000000","long_text_label1000001","long_text_label1000002",..., то индекс по трем первым символам будет явно мал.
...
Рейтинг: 0 / 0
Медленная работа поиска MySQL .
    #39580696
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще можно попробовать так - большую таблицу подключить как CSV table , а меньшую загрузить как MEMORY . И запрос написать так, чтобы в JOIN-е первая была ведущей.
...
Рейтинг: 0 / 0
Медленная работа поиска MySQL .
    #39581189
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksofttip78индекс по первым 3м буквамЗависит от того, что на самом деле в "Значение_1".
Если там что-то типа "long_text_label1000000","long_text_label1000001","long_text_label1000002",..., то индекс по трем первым символам будет явно мал.
чё серьёзно думаете, что в машинном коде индексы так выглядят?
т.е. в каждой строке будет "long_text_label", а только потом сам стринг и такой же поиск ))
...
Рейтинг: 0 / 0
Медленная работа поиска MySQL .
    #39581259
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78,

Не очень понял про машинный код. Но если MySQL указать, что нужно проиндексировать первые три символа, то в индексе и будут эти три символа. В моем примере они будут одинаковые для всех записей и индекс не будет иметь смысла.
...
Рейтинг: 0 / 0
Медленная работа поиска MySQL .
    #39581277
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft, ну у вас пример откровенно смешной, нет там таких индексов
про машинный код - откройте файл БД на диске
...
Рейтинг: 0 / 0
Медленная работа поиска MySQL .
    #39581511
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78miksoft, ну у вас пример откровенно смешной, нет там таких индексов
про машинный код - откройте файл БД на дискеу него нормальный пример, а вот про машинный код - это совсем не понятно
...
Рейтинг: 0 / 0
Медленная работа поиска MySQL .
    #39581626
paver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадяпро машинный код - это совсем не понятно
Че там не понятно? tip78 откровенно тупит.
...
Рейтинг: 0 / 0
Медленная работа поиска MySQL .
    #39581745
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
непонятно вам, а туплю я - классика
miksofttip78индекс по первым 3м буквамЗависит от того, что на самом деле в "Значение_1".
Если там что-то типа "long_text_label1000000","long_text_label1000001","long_text_label1000002",..., то индекс по трем первым символам будет явно мал.
1. если у вас такие записи, то храните уже 1000000 1000001 1000002 или ищите именно цифры
а если нет, то
авторпервые 3 буквы от 2 ярдов оставят 100к, а по ним быстро найдёт даже без индекса
2. у ТС там пользовательские логины, так что мимо
3. индекс всегда можно до 10 поднять или сколько надо
4. пример смешной.
...
Рейтинг: 0 / 0
Медленная работа поиска MySQL .
    #39583788
chita199853
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решение так и не найдено :(
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Медленная работа поиска MySQL .
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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