Страница 1 из 1
Вопрос железячникам и БД админам (+)
Добавлено: 05 окт 2005, 09:22
aldep
Есть такая ситуация. Вся база состоит из 4 таблиц, каждая имеет около 1000 столбцов и 12 млн записей. Полный размер базы около 500 ГБ.
Все таблицы имеют один числовой Primary Key.
Базы не обнавляются после создания. Все запросы только на чтение.
Запросы выдаются в основном пачками по 4, по одному к каждой таблице и могут исполняться параллельно. Запросы выполняют аггрегацию данных по критерию налагаемому на Primary Key (путем join c другой таблицей).
Возможна ситуация, когда 2-4 таких пачек запрашивается одновременно.
Один из важнейших параметров это скорость выполнения.
С точки зрения запросов оптимизировать, похоже нечего. А как насчет железа?
Кто-то может подсказать какую железную конфигурацию лучше всего использовать для этой задачи? Опции, которые я вижу RAID 0/5, internal/external SCSI array?
Стоит ли разбить базу на несколько: каждая на отдельном диске/контроллере?
Что здесь будет узким местом: контроллер, диск?
Спасибо!
Добавлено: 05 окт 2005, 09:33
Zy
Недостаточно информации.
Какая СУДБ, во-первых. Например, оракл может разбивать одну таблицу по разным дискам в зависимости от значения первичного ключа.
Во-вторых, какие запросы? Есть какая-то система, или запросы безсистемные? Если база статическая и есть система, по которой строятся запросы, то тогда о чем-то можно говорить. А если нет, то просто размазывать по дискам (raid или просто много дисков) да и все. IMHO.
Добавлено: 05 окт 2005, 10:12
aldep
СУБД - СКЛ сервер, он может делать patitioned tables, и мы это попробуем.
База статическая. Запросы в упрощенной форме такие:
Есть вспомогательная таблица с ID, там может быть от 1 до 12 млн записей.
Надо найти сумму значений во всех столбцах всех 4-х больших таблиц записей с ID из вспомогательной таблицы.
[/quote]
Добавлено: 05 окт 2005, 10:18
Zy
Т.е. запрос идет по primary key по каждой из таблиц. Т.е. если каждая таблица будет разбита по максимальному количеству дисков по признаку primary key, ты и получишь независимую работу отдельных дисков при параллельных запросах.
Можно еще проанализировать частоту использования конкретных ключей, возможно, есть группа ключей, которая используется чаще.
Но вообще-то это больше похоже на анекдот про врача, который оказался электриком, и женщину, не достигающую оргазма.

В том смысле, что есть конференции по БД, может, лучше там спросить?
Добавлено: 05 окт 2005, 12:02
aldep
В том смысле, что есть конференции по БД, может, лучше там спросить?
Одно другому не мешает. Там я тоже спросил
Спасибо!
Добавлено: 05 окт 2005, 12:11
папа Карло
РАИД 10. набить чем больше дисков тем лучше. 15К оборотов. дисками короткими (т.е. 18-36гиг) они быстрее.если за раз вычитывается большой объем данных то 2 гига памяти на 1 проц, если запросы "короткие", то 1 Гиг на проц.
Удачи!
sql
Добавлено: 05 окт 2005, 21:58
Yuri Dimant
aldep,а сеичас -то у тебя что за железо стоит?
1000 столбцов гооворишь, а не многовато ли?
Почему ты решил что запосы уже нельзя оптимизировать? Показал бы нам?
Я согласен с папои по поводу raid10 ,но прежде чем "лезть" в железо,может сначала с запрсом поработать
Re: sql
Добавлено: 06 окт 2005, 08:10
aldep
Yuri Dimant писал(а):aldep,а сеичас -то у тебя что за железо стоит?
1000 столбцов гооворишь, а не многовато ли?
Почему ты решил что запосы уже нельзя оптимизировать? Показал бы нам?
4-CPU DELL with 4GB и ЭТО
http://www.nexsan.com/products/products ... aboy2.html
Вопрос как ЭТО оптимально сконфигурить.
Yuri Dimant писал(а):
Я согласен с папои по поводу raid10 ,но прежде чем "лезть" в железо,может сначала с запрсом поработать
Запрос простой, так:
Select avg(t.col1), ... avg(t.col1000) FROM MyBigTable t, #MyIDs m
where m.id=t.id
Таблица #MyIDs временная и зависит от запроса, может содержать от 1 до всех 12 млн. id
id это primary clustered key в MyBigTable
Вроде тут оптимизировать нечего. И есть?
Добавлено: 06 окт 2005, 08:12
aldep
папа Карло писал(а):РАИД 10. набить чем больше дисков тем лучше. 15К оборотов. дисками короткими (т.е. 18-36гиг) они быстрее.
Так и сделаем.
папа Карло писал(а):
если за раз вычитывается большой объем данных то 2 гига памяти на 1 проц, если запросы "короткие", то 1 Гиг на проц.
Удачи!
У нас так и стоит.
Спасибо!
s
Добавлено: 06 окт 2005, 18:39
Yuri Dimant
adep
AWE открыто или \3ГБ в ини фаиле?
http://support.microsoft.com/default.as ... 50&sd=tech
Первое
Select avg(t.col1), ... avg(t.col1000) FROM MyBigTable t INNER JOIN #MyIDs m ON m.id=t.id
Второе
Рассмотри создание an indexed view (заменить #т на перманент таблицу)
И еще ,ты выполняешь агрегацию без WHERE condition ,просто тал на всю таблицу?
Всем спасибо (+)
Добавлено: 19 окт 2005, 07:15
aldep
Вроде определились с конфигурацией.
при числе одновременных запросов больше 10 лучше всего RAID 10, при меньшем числе RAID 5.
Спасиб.