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

- aldep
- Маньяк
- Сообщения: 1593
- Зарегистрирован: 18 фев 2003, 08:06
- Откуда: Toronto
- Контактная информация:
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
-
- Пользователь
- Сообщения: 107
- Зарегистрирован: 02 авг 2004, 22:00
sql
aldep,а сеичас -то у тебя что за железо стоит?
1000 столбцов гооворишь, а не многовато ли?
Почему ты решил что запосы уже нельзя оптимизировать? Показал бы нам?
Я согласен с папои по поводу raid10 ,но прежде чем "лезть" в железо,может сначала с запрсом поработать
1000 столбцов гооворишь, а не многовато ли?
Почему ты решил что запосы уже нельзя оптимизировать? Показал бы нам?
Я согласен с папои по поводу raid10 ,но прежде чем "лезть" в железо,может сначала с запрсом поработать
- aldep
- Маньяк
- Сообщения: 1593
- Зарегистрирован: 18 фев 2003, 08:06
- Откуда: Toronto
- Контактная информация:
Re: sql
4-CPU DELL with 4GB и ЭТО http://www.nexsan.com/products/products ... aboy2.htmlYuri Dimant писал(а):aldep,а сеичас -то у тебя что за железо стоит?
1000 столбцов гооворишь, а не многовато ли?
Почему ты решил что запосы уже нельзя оптимизировать? Показал бы нам?
Вопрос как ЭТО оптимально сконфигурить.
Запрос простой, так: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
Вроде тут оптимизировать нечего. И есть?
- aldep
- Маньяк
- Сообщения: 1593
- Зарегистрирован: 18 фев 2003, 08:06
- Откуда: Toronto
- Контактная информация:
Так и сделаем.папа Карло писал(а):РАИД 10. набить чем больше дисков тем лучше. 15К оборотов. дисками короткими (т.е. 18-36гиг) они быстрее.
У нас так и стоит.папа Карло писал(а): если за раз вычитывается большой объем данных то 2 гига памяти на 1 проц, если запросы "короткие", то 1 Гиг на проц.
Удачи!
Спасибо!
-
- Пользователь
- Сообщения: 107
- Зарегистрирован: 02 авг 2004, 22:00
s
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 ,просто тал на всю таблицу?
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 ,просто тал на всю таблицу?
- aldep
- Маньяк
- Сообщения: 1593
- Зарегистрирован: 18 фев 2003, 08:06
- Откуда: Toronto
- Контактная информация:
Всем спасибо (+)
Вроде определились с конфигурацией.
при числе одновременных запросов больше 10 лучше всего RAID 10, при меньшем числе RAID 5.
Спасиб.
при числе одновременных запросов больше 10 лучше всего RAID 10, при меньшем числе RAID 5.
Спасиб.