Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Большая таблица, мало RAM / 25 сообщений из 87, страница 1 из 4
19.01.2012, 13:55
    #37622133
thehil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая таблица, мало RAM
Какие существуют бесплатные решения позволяющие работать с большими таблицами (1 млрд.) на железе с ограниченной RAM. Т.е. когда даже индексы целиком не помещаются в память и невозможно расшардить таблицу на несколько машин.
Что можно придумать кроме партицирования чтобы получить хотя бы примерно линейную зависимость производительности от количества строк? При том что даже в случае партицирования могут быть запросы читающие со всех партиций. Спасибо.
...
Рейтинг: 0 / 0
19.01.2012, 13:59
    #37622146
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая таблица, мало RAM
thehilЧто можно придумать кроме партицирования чтобы получить хотя бы примерно линейную зависимость производительности от количества строк? При том что даже в случае партицирования могут быть запросы читающие со всех партиций. Спасибо.А она и так будет линейной в худшем случае. И с очень большим множителем (из-за физического ввода-вывода).
Обычно стремятся сделать быстрее, чем линейную. В чем помогают, например, индексы.
...
Рейтинг: 0 / 0
19.01.2012, 14:00
    #37622152
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая таблица, мало RAM
thehil,

Вы огласите задачу более детально. Пока же ничего определенного сказать нельзя. Может, любая СУБД будет одинаково плоха. А может, обычные файлы спасут.
...
Рейтинг: 0 / 0
19.01.2012, 14:00
    #37622156
thehil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая таблица, мало RAM
И да, аналитики совсем не нужно, больше на OLTP похоже.
...
Рейтинг: 0 / 0
19.01.2012, 14:03
    #37622164
thehil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая таблица, мало RAM
Производительность не будет линейной хотя бы из за того что при небольшом количестве записей индексы влазят в память, при большом - уже ничего не влазит. Доступ к строкам примерно равномерный, нету распределения по времени. Большинство запросов по ПК, часть - по другим индексированным полям.
...
Рейтинг: 0 / 0
19.01.2012, 14:11
    #37622185
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая таблица, мало RAM
thehilПроизводительность не будет линейной хотя бы из за того что при небольшом количестве записей индексы влазят в память, при большом - уже ничего не влазит.Да, по достижении некоторого порога будет скачок, но за ним картина опять будет той же (с индексом - логарифмическйи рост, без индекса - линейный).
...
Рейтинг: 0 / 0
19.01.2012, 14:15
    #37622193
thehil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая таблица, мало RAM
miksoftthehilПроизводительность не будет линейной хотя бы из за того что при небольшом количестве записей индексы влазят в память, при большом - уже ничего не влазит.Да, по достижении некоторого порога будет скачок, но за ним картина опять будет той же (с индексом - логарифмическйи рост, без индекса - линейный).

Это и понятно, цель - преодолеть скачок. Мой первый вариант - партицирование, тут можно надеятся на примерно одинаковою производительность при любом числе строк для запросов по ключу партицирования. Но для остальных запросов будет только хуже.

Нужны ещё варианты. Причем бесплатные.
...
Рейтинг: 0 / 0
19.01.2012, 14:18
    #37622204
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая таблица, мало RAM
А партиционирование где бесплатное?
...
Рейтинг: 0 / 0
19.01.2012, 14:24
    #37622226
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая таблица, мало RAM
thehilЭто и понятно, цель - преодолеть скачок.Никак не преодолете. Либо физический ввод/вывод не нужен (нужные данные есть в ОП), либо нужен. Во втором случае совсем другие времена.

Максимум, что в этой ситуации поможет, имхо:
1) правильный алгоритм кэширования, чтобы для наиболее критичных по времени запросов была выше вероятность обойтись данными в ОП.
2) правильное использование индексов и других механизмов СУБД, позволяющие минимизировать физический ввод/вывод. И не вовсе не факт, что партиционирование тут поможет.

Пока не описана четко задача - можно теоретизировать бесконечно. Оптимизировать можно только частный случай.
...
Рейтинг: 0 / 0
19.01.2012, 14:34
    #37622261
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая таблица, мало RAM
В случае Oracle, партишионирование поддерживает только EE - это сотни тысяч долларов на один сервер. С DB2 аналогично.

Postgres?
...
Рейтинг: 0 / 0
19.01.2012, 14:43
    #37622292
thehil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая таблица, мало RAM
Victor Metelitsa,

Да PostgreSQL поддерживает, да и на крайний случай MySQL тоже может.

Насчет подробнестей - уточните что вы ещё хотите услышать?
Есть отностительно слабый сервер, из железа больше ничего. Есть таблица с миллионами строк, хочется чтобы разростание до миллиардов не привело к заметному ухудшению времени отклика. Апп сервер на той же машине. Запросов не много, до нескольких в секунду. Запросы элементарные: дай/удали/измени строку по id в основном (80%), немного запросов по другим полям из этой же таблицы, использующие индекс (10%), есть несколько джойнов с такой же большой таблицей по id. Везде индексы и на небольших объёмах данных отклик устраивает.
...
Рейтинг: 0 / 0
19.01.2012, 14:45
    #37622296
Большая таблица, мало RAM
thehil , А про нелинейную зависимость в OLTP от размера таблицы это вы тестами определили или предположили?
...
Рейтинг: 0 / 0
19.01.2012, 14:45
    #37622297
thehil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая таблица, мало RAM
Была мысль насчет шардинга mongodb на одной машине, но походу это гиблое дело.
...
Рейтинг: 0 / 0
19.01.2012, 14:47
    #37622305
thehil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая таблица, мало RAM
нелинейную зависимость в OLTP,

Предположин, да и люди выше подтвердили. Пока всё в памяти - логарифмически, как только не влазит - должно хуже. Сейчас попробую провести тест в условиях ограниченной памяти.
...
Рейтинг: 0 / 0
19.01.2012, 14:47
    #37622307
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая таблица, мало RAM
thehilЗапросов не много, до нескольких в секунду.Ну тут и с дисковыми чтениями ничего страшного не будет.
...
Рейтинг: 0 / 0
19.01.2012, 14:49
    #37622315
Большая таблица, мало RAM
thehilVictor Metelitsa,

Да PostgreSQL поддерживает, да и на крайний случай MySQL тоже может.

Насчет подробнестей - уточните что вы ещё хотите услышать?
Есть отностительно слабый сервер, из железа больше ничего. Есть таблица с миллионами строк, хочется чтобы разростание до миллиардов не привело к заметному ухудшению времени отклика. Апп сервер на той же машине. Запросов не много, до нескольких в секунду. Запросы элементарные: дай/удали/измени строку по id в основном (80%), немного запросов по другим полям из этой же таблицы, использующие индекс (10%), есть несколько джойнов с такой же большой таблицей по id. Везде индексы и на небольших объёмах данных отклик устраивает.
Сколько ОЗУ? Какая СУБД?
Первые 2-3 уровня индекса будут закэшированы. Партиционирование это фактически ещё один уровень индекса. Здесь удобство бывает в том, что с партициями можно работать как с обычными таблицами и переносить их между тейблспейсами и соотвественно на другие СХД.
...
Рейтинг: 0 / 0
19.01.2012, 14:51
    #37622322
thehil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая таблица, мало RAM
miksoft,

Возможно. Но в любом случае чтение с диска заметно медленнее чем из памяти. В случае с партицирование есть шанс выделить наиболее используемые данные в одну партицию и тогда шанс попадание в кеш индекса для этой партиции должен быть выше.
...
Рейтинг: 0 / 0
19.01.2012, 14:52
    #37622327
Большая таблица, мало RAM
thehilнелинейную зависимость в OLTP,

Предположин, да и люди выше подтвердили. Пока всё в памяти - логарифмически, как только не влазит - должно хуже. Сейчас попробую провести тест в условиях ограниченной памяти.
Если подтвердиться то только шардинг, кластер или добавлять памяти.
...
Рейтинг: 0 / 0
19.01.2012, 14:54
    #37622329
Большая таблица, мало RAM
thehilmiksoft,

Возможно. Но в любом случае чтение с диска заметно медленнее чем из памяти. В случае с партицирование есть шанс выделить наиболее используемые данные в одну партицию и тогда шанс попадание в кеш индекса для этой партиции должен быть выше.
Попробуйте "провести тест в условиях ограниченной памяти." и если будут ухудшения, то попробуйте от них избавиться "выделить наиболее используемые данные в одну партицию и тогда шанс попадание в кеш индекса для этой партиции должен быть выше.".
...
Рейтинг: 0 / 0
19.01.2012, 14:54
    #37622331
thehil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая таблица, мало RAM
Сколько ОЗУ? Какая СУБД?Сколько ОЗУ? Какая СУБД?
Первые 2-3 уровня индекса будут закэшированы. Партиционирование это фактически ещё один уровень индекса. Здесь удобство бывает в том, что с партициями можно работать как с обычными таблицами и переносить их между тейблспейсами и соотвественно на другие СХД.
Сейчас PostgreSQL, но возможно поменять на абсолютно любую бесплатную. ОЗУ может меняться, т.к. приложение целиком с базой ставится на клиентский сервер. Давайте предположим что минимум 4 Gb ОЗУ.
...
Рейтинг: 0 / 0
19.01.2012, 14:55
    #37622335
thehil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая таблица, мало RAM
нелинейную зависимость в OLTPthehilнелинейную зависимость в OLTP,

Предположин, да и люди выше подтвердили. Пока всё в памяти - логарифмически, как только не влазит - должно хуже. Сейчас попробую провести тест в условиях ограниченной памяти.
Если подтвердиться то только шардинг, кластер или добавлять памяти.
К сожалению все эти варианты сразу отпадают.
...
Рейтинг: 0 / 0
19.01.2012, 14:55
    #37622336
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая таблица, мало RAM
thehilmiksoft,

Возможно. Но в любом случае чтение с диска заметно медленнее чем из памяти.Пока не озвучены четкие цифры вида "такой-то SQL-запрос на таких-то данных отрабывает за X секунд, а допустимо не более чем за Y секунд в Z% случаев" ваши фразы типа "заметно медленнее" - ни о чем.
...
Рейтинг: 0 / 0
19.01.2012, 14:58
    #37622345
Yo.!
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая таблица, мало RAM
Victor MetelitsaВ случае Oracle, партишионирование поддерживает только EE - это сотни тысяч долларов на один сервер. С DB2 аналогично.

Partition Views есть в любой оракловой редакции
http://docs.oracle.com/cd/A57673_01/DOC/server/doc/A48506/partview.htm#351

в постгрес взрослого партитионинга нет, но есть те же самые Partition Views
...
Рейтинг: 0 / 0
19.01.2012, 15:01
    #37622354
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая таблица, мало RAM
thehilЕсть отностительно слабый сервер, из железа больше ничего. Есть таблица с миллионами строк, хочется чтобы разростание до миллиардов не привело к заметному ухудшению времени отклика. Апп сервер на той же машине. Запросов не много, до нескольких в секунду. Запросы элементарные: дай/удали/измени строку по id в основном (80%), немного запросов по другим полям из этой же таблицы, использующие индекс (10%), есть несколько джойнов с такой же большой таблицей по id. Везде индексы и на небольших объёмах данных отклик устраивает.

Загрузите тестовыми данными, да посмотрите. Лично мне кажется, что при такой абстрактной постановке и с миллиардами записей будет терпимо работать (причём даже без партишионирования, но при наличии подходящих индексов). Вот бекапы делать - это да...
...
Рейтинг: 0 / 0
19.01.2012, 15:09
    #37622380
Victor Metelitsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая таблица, мало RAM
Yo.!Victor MetelitsaВ случае Oracle, партишионирование поддерживает только EE - это сотни тысяч долларов на один сервер. С DB2 аналогично.

Partition Views есть в любой оракловой редакции
http://docs.oracle.com/cd/A57673_01/DOC/server/doc/A48506/partview.htm#351

А... Я уже забыл про эту фичу (в DB2 такое можно также на любых версиях)
...
Рейтинг: 0 / 0
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Большая таблица, мало RAM / 25 сообщений из 87, страница 1 из 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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