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 :: Поиск по огромной базе данных

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Crowley
Отправлено: 02 Февраля, 2014 - 19:25:26
Post Id


Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




Есть SSD сервер(ОЗУ - 1 гиг, процессор - 2.7 вроде(точно не помню),память - 40 гигов)
На этом SSD стоит база данных в 2 гига. Нужно осуществить поиск по ней примерно 100 значений за раз, и сделать это максимально быстро.
Какие будут советы?
 
 Top
T1grOK
Отправлено: 02 Февраля, 2014 - 19:34:37
Post Id



Частый гость


Покинул форум
Сообщений всего: 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
 
 Top
Мелкий Супермодератор
Отправлено: 02 Февраля, 2014 - 19:47:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




2гб - огромная база?
Хотя бы лям записей-то в ней есть?


-----
PostgreSQL DBA
 
 Top
Ch_chov
Отправлено: 02 Февраля, 2014 - 19:49:14
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Наверно, тип базы нужно знать.
 
 Top
Crowley
Отправлено: 02 Февраля, 2014 - 20:01:49
Post Id


Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




Немного я недооценил масштабы.
В текстовом файле(это еще не БД) 41 миллион строк(1.2 гига), почему-то я решил, что перенеся все в БД будет где-то 2 гига строк.. Я ошибся, видимо.
Нужна идея для работы с БД в 41 миллион строк.
 
 Top
caballero
Отправлено: 02 Февраля, 2014 - 20:20:34
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




а проблема то какая?


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Crowley
Отправлено: 02 Февраля, 2014 - 20:33:51
Post Id


Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




caballero пишет:
а проблема то какая?

Как я понял, если обрабатывать 41 миллион строк, это будет очень долго(от 2 минут) разве нет?
 
 Top
caballero
Отправлено: 02 Февраля, 2014 - 20:35:17
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




смотря каких строк и смотря что подразумевается под "обрабатывать"


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Crowley
Отправлено: 02 Февраля, 2014 - 20:41:01
Post Id


Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




caballero пишет:
смотря каких строк и смотря что подразумевается под "обрабатывать"

Строки в среднем 32 символа, но могут быть и длиннее.
Обрабатывать - искать в базе совпадения, и выводить их пользователю, если эти совпадения есть.
 
 Top
Мелкий Супермодератор
Отправлено: 02 Февраля, 2014 - 20:47:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Точные совпадения? (Или хотя бы "строка начинается с ...")
Индекс повесить и всего делов.


-----
PostgreSQL DBA
 
 Top
Crowley
Отправлено: 02 Февраля, 2014 - 21:01:44
Post Id


Гость


Покинул форум
Сообщений всего: 67
Дата рег-ции: Янв. 2014  


Помог: 0 раз(а)




Мелкий пишет:
Точные совпадения? (Или хотя бы "строка начинается с ...")
Индекс повесить и всего делов.

Точные совпадения.
Значит, нужно повесить индекс(Не подскажите как? Ни разу не работал с БД) и все?
 
 Top
T1grOK
Отправлено: 02 Февраля, 2014 - 23:04:34
Post Id



Частый гость


Покинул форум
Сообщений всего: 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
 
 Top
Мелкий Супермодератор
Отправлено: 03 Февраля, 2014 - 10:09:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




T1grOK пишет:
Боюсь "тазик" слабоват будет.

Памяти мало, конечно, весь рабочий набор не влезет, но за глаза.
Начать с индекса по 5 символам (~625мб, если не ошибаюсь в подсчётах), по вкусу добавить-убрать.
Если вдруг что - можно эмулировать хеш-индекс по crc32, уж инты прогретыми держать памяти хватит ещё долго.

Как:
CODE (SQL):
скопировать код в буфер обмена
  1. ALTER TABLE `table` ADD INDEX ( `field` ( 5 ) )

Подробнее в мануале: http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]alter-table[dot]html


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB