Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Поиск по огромной базе данных
Покинул форум
Сообщений всего: 67
Дата рег-ции: Янв. 2014
Помог: 0 раз(а)
Есть SSD сервер(ОЗУ - 1 гиг, процессор - 2.7 вроде(точно не помню),память - 40 гигов)
На этом SSD стоит база данных в 2 гига. Нужно осуществить поиск по ней примерно 100 значений за раз, и сделать это максимально быстро.
Какие будут советы?
T1grOK
Отправлено: 02 Февраля, 2014 - 19:34:37
Частый гость
Покинул форум
Сообщений всего: 129
Дата рег-ции: Июнь 2013
Помог: 7 раз(а)
Смотря какой поиск.
Проставить индексы, денормализовать БД, если потребуется. И накрайняк подключить Sphinx(но придется уведилить мощностя).
На одном из проектов использую Sphinx таблица 40 млн. строк (4,5Гб) нет нареканий.
----- Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Мелкий
Отправлено: 02 Февраля, 2014 - 19:47:51
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
2гб - огромная база?
Хотя бы лям записей-то в ней есть?
----- PostgreSQL DBA
Ch_chov
Отправлено: 02 Февраля, 2014 - 19:49:14
Постоянный участник
Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008 Откуда: из города
Помог: 90 раз(а)
Наверно, тип базы нужно знать.
Crowley
Отправлено: 02 Февраля, 2014 - 20:01:49
Гость
Покинул форум
Сообщений всего: 67
Дата рег-ции: Янв. 2014
Помог: 0 раз(а)
Немного я недооценил масштабы.
В текстовом файле(это еще не БД) 41 миллион строк(1.2 гига), почему-то я решил, что перенеся все в БД будет где-то 2 гига строк.. Я ошибся, видимо.
Нужна идея для работы с БД в 41 миллион строк.
caballero
Отправлено: 02 Февраля, 2014 - 20:20:34
Активный участник
Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011 Откуда: Харьков
Покинул форум
Сообщений всего: 67
Дата рег-ции: Янв. 2014
Помог: 0 раз(а)
caballero пишет:
смотря каких строк и смотря что подразумевается под "обрабатывать"
Строки в среднем 32 символа, но могут быть и длиннее.
Обрабатывать - искать в базе совпадения, и выводить их пользователю, если эти совпадения есть.
Мелкий
Отправлено: 02 Февраля, 2014 - 20:47:04
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Точные совпадения? (Или хотя бы "строка начинается с ...")
Индекс повесить и всего делов.
----- PostgreSQL DBA
Crowley
Отправлено: 02 Февраля, 2014 - 21:01:44
Гость
Покинул форум
Сообщений всего: 67
Дата рег-ции: Янв. 2014
Помог: 0 раз(а)
Мелкий пишет:
Точные совпадения? (Или хотя бы "строка начинается с ...")
Индекс повесить и всего делов.
Точные совпадения.
Значит, нужно повесить индекс(Не подскажите как? Ни разу не работал с БД) и все?
T1grOK
Отправлено: 02 Февраля, 2014 - 23:04:34
Частый гость
Покинул форум
Сообщений всего: 129
Дата рег-ции: Июнь 2013
Помог: 7 раз(а)
Crowley пишет:
Нужна идея для работы с БД в 41 миллион строк.
Crowley пишет:
Строки в среднем 32 символа, но могут быть и длиннее.
Обрабатывать - искать в базе совпадения, и выводить их пользователю, если эти совпадения есть.
Мелкий пишет:
Индекс повесить и всего делов.
Crowley пишет:
Есть SSD сервер(ОЗУ - 1 гиг, процессор - 2.7 вроде(точно не помню),память - 40 гигов)
Боюсь "тазик" слабоват будет.
----- Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
Мелкий
Отправлено: 03 Февраля, 2014 - 10:09:24
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
T1grOK пишет:
Боюсь "тазик" слабоват будет.
Памяти мало, конечно, весь рабочий набор не влезет, но за глаза.
Начать с индекса по 5 символам (~625мб, если не ошибаюсь в подсчётах), по вкусу добавить-убрать.
Если вдруг что - можно эмулировать хеш-индекс по crc32, уж инты прогретыми держать памяти хватит ещё долго.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.