|
Секционирование таблицы
|
|||
---|---|---|---|
#18+
Добрый день. Друзья, нужен совет. Есть у меня группа таблиц больших размеров с сотнями миллионов записей. Например, таблицы заполнялись с 2000 по 2010 года. Интенсивно используются данные за последние два года. Я сейчас вижу несколько возможных вариантов по оптимизации. Сразу скажу, что разбивка таблицы физически на несколько не допускается. 1. Можно ли виртуально разбить таблицу до 2008 года и после, и для каждой части отдельно создавать нужные индексы 2. Создать несколько сегментов, в один сегмент, который будет находится на дивайсе А и на диске АА, закинуть данные 2000-2008 годов, а данные 2009-... распределить по другим сегментам В1..N на других дисках. Тогда конечно индексы будут одинаковыми для всей таблицы. Спасибо. Adaptive Server Enterprise/15.0.2/X64/Windows Server/ase1502/64-bit ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2010, 13:37 |
|
Секционирование таблицы
|
|||
---|---|---|---|
#18+
Тут нужно подумать, что именно нужно и как этого достигать. Выделив два года на отдельные диски можно получить не выигрыш, а проигрыш в скорости. Раньше на запросах на чтение работали все диски равномерно (при равномерно случайном распределении данных по годам на физ.носителях), а после партиционирования тужиться будут только 20% дисков, и как сами понимаете при одинаковом суммарном потоке такой дисбаланс может снизить потолок и производительность запросов... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2010, 14:23 |
|
Секционирование таблицы
|
|||
---|---|---|---|
#18+
cherrex_Den спасибо, почитаю! iLLer В данный момент у меня есть , скажем, 4 таблицы, каждая разбита на 3 сегмента A B C, к каждому сегменту привязан девайс AA BB CC, эти девайсы находятся на расных дисках D1 D2 D3. Что если я выделю диск Z, на котором будут находится данные этих 4х таблиц за 2000-2008 года, а данные за 2009-... распределю также как и в настоящий момент, то есть разобью по дискам D1 D2 D3. Данные за 2000-2008 года, редко требуются. Остальные диски сервера заняты своим делом, где лог где темп дб... Если я так сделаю, увеличится ли производительность, как вы считаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2010, 14:41 |
|
Секционирование таблицы
|
|||
---|---|---|---|
#18+
Тут еще нужно знать характер запросов. Если идет последовательная выборка большого массива данных, то конечно же лучше чтобы данные лежали последовательно. Т.е. полное рандомное размазывание данных по дискам не нужно. По хорошему, можно было бы сделать как-то так: все ненужные данные (с 2000 по 2008 г) свалить на D1, нужные данные разбить на три равных куска и положить их на D1, D2 и D3. Если же последовательного чтения мало, таблица гигантская, но подцепляется присоединением в основном к другим таблицам, то ее упорядочиванние практически ничего не даст, тогда уж лучше в перемешку все размещать. (здесь, правда, как я понял данные упорядочены по дате и она же используется в запросах, тогда первый вариант логичнее). Кроме характера запросов также следует учитывать вероятность одновременного выполнения нескольких запросов. И, что тоже важно, наличие рэйд массива и то, как физика хранения транслируется в логику. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2010, 15:32 |
|
|
start [/forum/topic.php?fid=55&gotonew=1&tid=2010476]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
10ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 310ms |
total: | 461ms |
0 / 0 |