![]() |
|
Модераторы: LSD |
![]()
|
|
| AJetman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 16.8.2009 Репутация: нет Всего: 2 |
Таблица состоит из:
- 1 поле первичный ключ с автоинкрементом - 5 полей VARCHAR(255) с индексами для быстрой выборки - 1 поле TEXT (в среднем длина текста 1500 байт) Сейчас в таблице уже 8 млн записей, через месяц будет 30 млн, а за год до 300 млн, через три 1 млрд. Используется PostgreSQL 8.3, работа с БД ведется из приложений на Java. Сервер Phenom X4 c 4GB RAM и одним жестким диском на 500GB. Платить деньги за коммерческие БД смысла не вижу(если есть - поясните). Какие потенциально могут быть у меня проблемы c БД? Сейчас, например, подсчет количества записей в таблице уже ведется с помощью триггеров, т.к. запрос SELECT COUNT(*) FROM table занимает много времени. Фильтр по VARCHAR полям тоже уже не совсем быстрый. Нужно улучшать сервер? Ставить RAID? Может мне подойдет система типа Apache Hadoop? Кроме этой таблицы, в БД будут таблицы с максимум 10 тыс. записей. |
|||
|
||||
| jsa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 704 Регистрация: 19.1.2006 Где: Новосибирск Репутация: 1 Всего: 20 |
при большом наличии однородных данных, наличие индексов не спасет, пример - в таблице 1млн записей, и только несколько процентов записей несут отличительный информационных характер - вот здесь индексы могут еще и снизить быстродействие если требуется поиск, то можно попробовать посмотреть в сторону поисковых систем, например sphinx - бесплатная система, поддерживает постгрес Добавлено через 4 минуты и 56 секунд sphinx реально может ускорить поиск в разы, правда придется часто перестраивать индексы(не путать с индексами в БД), что может являться продолжительной по времени задачей при таком объеме -------------------- Все мы, на перине с песней, строим небо на земле © Ю. Шевчук |
|||
|
||||
| jsa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 704 Регистрация: 19.1.2006 Где: Новосибирск Репутация: 1 Всего: 20 |
можно подумать о перепроектировании системы:
1 - 300 млн запимей в год - достаточно много, реально такое количество сложно обрабать машине, не говоря уже про человека, поэтому если требуется какие-то отчеты по этим данным, то лучше создавать отдельные таблицы с минимально необходимым набором данных, например ночью, когда никто не пользуется базой подготавливать отчеты 2 - хранить только актуальные данные - не представляю практическую ценность данных 3-х летней давности количеством 1 млрд - все что не нужно - бекапить -------------------- Все мы, на перине с песней, строим небо на земле © Ю. Шевчук |
|||
|
||||
| Ипатьев |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: нет Всего: 37 |
Скорее всего, потребуется перенастройка сервера/серверной машины.
Значение для производительности базы имеет не размер базы, а размер индексов. Из этого и следует исходить. А вообще, не следует избегать участия в проекте специалистов. DBA - отдельная и сложная профессия. Когда проектируют новый дом, то архитектор не спрашивает на форуме, какие трубы ставить и как их размещать. Он нанимает специалиста по инженерным коммуникациям. Иначе есть большой шанс, что жителей зальет чем-нибудь не очень приятно пахнущим. |
|||
|
||||
| DimW |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 2 Всего: 44 |
спорное утвеждение, для таких случаев существуют bitmap index, для 1 млн. о котором вы горорите как раз подойдет.
такие данные представляют ценность в получении статистической информации, если AJetman, вам такая информация необходима то стоит подумать об организации хранилица данных вместо бекапа. естественно к этому нужно привлекать сециалистов. AJetman, покапайте так же в сторону партиционирования таблиц. |
||||
|
|||||
| jsa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 704 Регистрация: 19.1.2006 Где: Новосибирск Репутация: 1 Всего: 20 |
это был просто пример -------------------- Все мы, на перине с песней, строим небо на земле © Ю. Шевчук |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 2 Всего: 44 |
||||
|
||||
| jsa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 704 Регистрация: 19.1.2006 Где: Новосибирск Репутация: 1 Всего: 20 |
конечно -------------------- Все мы, на перине с песней, строим небо на земле © Ю. Шевчук |
|||
|
||||
| AJetman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 16.8.2009 Репутация: нет Всего: 2 |
Всем спасибо за ответы. Простите, что забыл про эту тему. Проблему свою уже решил.
|
|||
|
||||
| gelo86 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 388 Регистрация: 26.10.2007 Репутация: нет Всего: нет |
А как решил ?
|
|||
|
||||
| AJetman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 16.8.2009 Репутация: нет Всего: 2 |
Разделил на две таблицы. Первая - информационная с минимальным размером строки, т.е. все VARCHAR'ы(см. первое сообщение) были заменены на TINYINT (да да, использую MySQL). Таблица занимает минимум места и поэтому выборка производится максимально быстро. Вторая - хранилище исходных данных (это было поле TEXT). Когда необходимо достать исходные данные, то просто находим список ID из первой таблицы, загоняя их в MEMORY таблицу, и по списку выбираем информацию из второй. Все работает довольно быстро и пока такая схема устраивает (данных уже на 100 млн записей). |
|||
|
||||
![]()
|
| Правила форума "Общие вопросы по базам данных" | |
|
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |