Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Наткнулся на такую информацию, нужны разъяснения плиз...  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
Наткнулся на статью http://www.sql-server-performance.com/2007/installation-setup/
Для ленивых кто читать не хочет>>>...суть проблемы...есть БД 100Гб с дебильно устроенной внутренней архитектурой, а именно около 10-12 таблиц занимают более половины её могучего объёма и состоят из 10-70млн.строк каждая. Так вот в самом конце данной статьи при таком раскладе рекомендуют разбить mdf файл БД для обеспечения многопоточности.

"Скажем, у вас есть одна таблица с 10 миллионами строк, которые в значительной степени запрос. Если таблица находится в одном файле, например, один файл базы данных, то SQL Server будет использовать только один поток для выполнения последовательного чтения строк в таблице. Но если в таблице были разделены на три физических файлов (все части той же файловой группе), то SQL Server будет использовать три потока (по одному на физический файл), чтобы последовательно читать таблицы, которые потенциально могли бы быть гораздо быстрее. Кроме того, если каждый файл был сам по себе отдельный диск или дисковый массив, производительность будет даже больше." <<< это гугл транслит для самых ленивых, но суть понять даёт.

То есть советуют организовать некую структуру оптимизации вроде как похожую по рекомендациям на оптимизацию tempdb(кто делал, читал, в курсе). Так вот сам вопрос: как именно разбить единственный файл mdf для осуществления данных рекомендаций ???
З.Ы.: если просто добавить новый файл в имеющуюся файловую группу, то он будет заполняться последовательно после уже имеющегося, а как разделить хранение уже имеющийся информации более менее равномерно между файлами одной файловой группы ?
12 сен 11, 15:10    [11264381]     Ответить | Цитировать Сообщить модератору
 Re: Наткнулся на такую информацию, нужны разъяснения плиз...  [new]
Glory
Member

Откуда:
Сообщений: 104751
stavgreengo
если просто добавить новый файл в имеющуюся файловую группу, то он будет заполняться последовательно после уже имеющегося, а как разделить хранение уже имеющийся информации более менее равномерно между файлами одной файловой группы ?

файлы в одной файовой группе заполняются пропорционально, а не последовательно
12 сен 11, 15:20    [11264439]     Ответить | Цитировать Сообщить модератору
 Re: Наткнулся на такую информацию, нужны разъяснения плиз...  [new]
LSV
Member [заблокирован]

Откуда: Киев
Сообщений: 30817
Вариантов разбивки немеряно:
* Разнести индексы и данные по разным файлам (и массивам)
* Разнести крупные таблицы по разным файлам (и массивам)
* Создать секционированные таблицы.

Без изменения конфигурации дисковых массивов существенно поднять производительность вряд ли удастся (оптимальность созданных индексов не обсуждаем).
12 сен 11, 15:21    [11264446]     Ответить | Цитировать Сообщить модератору
 Re: Наткнулся на такую информацию, нужны разъяснения плиз...  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
Glory
stavgreengo
если просто добавить новый файл в имеющуюся файловую группу, то он будет заполняться последовательно после уже имеющегося, а как разделить хранение уже имеющийся информации более менее равномерно между файлами одной файловой группы ?

файлы в одной файовой группе заполняются пропорционально, а не последовательно

Ну это я так понимаю если изначально задать при создании БД несколько файлов в одной файловой группе, далее они уже будут заполнятся пропорционально, а если добавить несколько ndf файлом к уже имеющимуся mdf файлу, то само собою это не случится.
12 сен 11, 15:36    [11264563]     Ответить | Цитировать Сообщить модератору
 Re: Наткнулся на такую информацию, нужны разъяснения плиз...  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
LSV
Вариантов разбивки немеряно:
* Разнести индексы и данные по разным файлам (и массивам)
* Разнести крупные таблицы по разным файлам (и массивам)
* Создать секционированные таблицы.

Без изменения конфигурации дисковых массивов существенно поднять производительность вряд ли удастся (оптимальность созданных индексов не обсуждаем).


В моей ситуации мне более всего подходит вариант №2, можно поподробнее в общих чертах как это сделать ? Или ссылочку ?
12 сен 11, 15:39    [11264586]     Ответить | Цитировать Сообщить модератору
 Re: Наткнулся на такую информацию, нужны разъяснения плиз...  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
stavgreengo
Glory
пропущено...

файлы в одной файовой группе заполняются пропорционально, а не последовательно

Ну это я так понимаю если изначально задать при создании БД несколько файлов в одной файловой группе, далее они уже будут заполнятся пропорционально, а если добавить несколько ndf файлом к уже имеющимуся mdf файлу, то само собою это не случится.
То есть я хотел сказать будут заполнятся тоже пропорционально, но уже новой информацией, а надо бы их перекомпановать равномерным разбиением старой информации.
12 сен 11, 15:41    [11264608]     Ответить | Цитировать Сообщить модератору
 Re: Наткнулся на такую информацию, нужны разъяснения плиз...  [new]
Glory
Member

Откуда:
Сообщений: 104751
stavgreengo
stavgreengo
пропущено...

Ну это я так понимаю если изначально задать при создании БД несколько файлов в одной файловой группе, далее они уже будут заполнятся пропорционально, а если добавить несколько ndf файлом к уже имеющимуся mdf файлу, то само собою это не случится.
То есть я хотел сказать будут заполнятся тоже пропорционально, но уже новой информацией, а надо бы их перекомпановать равномерным разбиением старой информации.

И в чем проблема сделать новую файловую группу и перенести туда таблицу ?
12 сен 11, 16:15    [11264923]     Ответить | Цитировать Сообщить модератору
 Re: Наткнулся на такую информацию, нужны разъяснения плиз...  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
Glory
stavgreengo
пропущено...
То есть я хотел сказать будут заполнятся тоже пропорционально, но уже новой информацией, а надо бы их перекомпановать равномерным разбиением старой информации.

И в чем проблема сделать новую файловую группу и перенести туда таблицу ?

Сделать не проблема, как перенести, к сожалению никогда не касался этого ? ...в BOL тоже что-то не вижу где это описывается
12 сен 11, 16:22    [11264962]     Ответить | Цитировать Сообщить модератору
 Re: Наткнулся на такую информацию, нужны разъяснения плиз...  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
stavgreengo
LSV
Вариантов разбивки немеряно:
* Разнести индексы и данные по разным файлам (и массивам)
* Разнести крупные таблицы по разным файлам (и массивам)
* Создать секционированные таблицы.

Без изменения конфигурации дисковых массивов существенно поднять производительность вряд ли удастся (оптимальность созданных индексов не обсуждаем).


В моей ситуации мне более всего подходит вариант №2, можно поподробнее в общих чертах как это сделать ? Или ссылочку ?

т.к. mdf файл освободить нельзя для удаления, необходимо:
1. создать файловую группу.
2. Переместить данные (таблицы) из PRIMARY MDF в эту файловую группу.
3. Создать несколько файлов в PRIMARY.
4. Переместить данные (таблицы) обратно в PRIMARY группу.
5. Доп файловую группу можно прибить (по желанию).
12 сен 11, 16:24    [11264969]     Ответить | Цитировать Сообщить модератору
 Re: Наткнулся на такую информацию, нужны разъяснения плиз...  [new]
Glory
Member

Откуда:
Сообщений: 104751
stavgreengo
То есть советуют организовать некую структуру оптимизации вроде как похожую по рекомендациям на оптимизацию tempdb(кто делал, читал, в курсе). Так вот сам вопрос: как именно разбить единственный файл mdf для осуществления данных рекомендаций ???

Для tempdb советуют создавать столько файлов, сколько ядер использует сервер
Для простой таблицы разнесение ее на несколько файлов выгодно, если точно знаете, что параллельные запросы будут гарантированно читать данные из разных файлов. Простым пропорциональным разделением таблицы по файлам по-моему вы такую гарантию не получите
12 сен 11, 16:27    [11264999]     Ответить | Цитировать Сообщить модератору
 Re: Наткнулся на такую информацию, нужны разъяснения плиз...  [new]
Glory
Member

Откуда:
Сообщений: 104751
stavgreengo
Glory
пропущено...

И в чем проблема сделать новую файловую группу и перенести туда таблицу ?

Сделать не проблема, как перенести, к сожалению никогда не касался этого ? ...в BOL тоже что-то не вижу где это описывается

INSERT - SELECT
bcp out - bcp in
12 сен 11, 16:28    [11265012]     Ответить | Цитировать Сообщить модератору
 Re: Наткнулся на такую информацию, нужны разъяснения плиз...  [new]
komrad
Member

Откуда:
Сообщений: 5758
Glory
stavgreengo
пропущено...

Сделать не проблема, как перенести, к сожалению никогда не касался этого ? ...в BOL тоже что-то не вижу где это описывается

INSERT - SELECT
bcp out - bcp in


или создать и дропнуть кластерный индекс на нужной файл-группе

create clustered index ... on table(..) on 'secondary'

где secondary - это вторая файл-группа
12 сен 11, 17:18    [11265402]     Ответить | Цитировать Сообщить модератору
 Re: Наткнулся на такую информацию, нужны разъяснения плиз...  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
komrad
Glory
пропущено...

INSERT - SELECT
bcp out - bcp in


или создать и дропнуть кластерный индекс на нужной файл-группе

create clustered index ... on table(..) on 'secondary'

где secondary - это вторая файл-группа

Если есть внешние ключи ссылающиеся на этот индекс то неполучиться дропнуть. А так да как вариант
12 сен 11, 17:25    [11265468]     Ответить | Цитировать Сообщить модератору
 Re: Наткнулся на такую информацию, нужны разъяснения плиз...  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
gds
komrad
пропущено...


или создать и дропнуть кластерный индекс на нужной файл-группе

create clustered index ... on table(..) on 'secondary'

где secondary - это вторая файл-группа

Если есть внешние ключи ссылающиеся на этот индекс то неполучиться дропнуть. А так да как вариант

Именно так и обстоит дело...жаль,а было бы гораздо проще :( придётся разбираться с первым методом
12 сен 11, 18:34    [11265845]     Ответить | Цитировать Сообщить модератору
 Re: Наткнулся на такую информацию, нужны разъяснения плиз...  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
Кстати подскажите как лучше организовать структуру такого разбиения. Система: С: - зеркало, одна W2003S 86x D: и E: - RAID 1+0, на D: - БД, на E: их логи, F: - отдельный диск вне райда, там tempdb и её логи.
Tempdb используеться очень активно, её лог пухнет на глазах.
1) разбивать mdf на сколько оптимальней частей ? (4 процессора по 2ва ядра и 16Гб ОЗУ)
2) стоит ли растаскивать эти части по райду на Е к логам ? или даже на C и F
3) Лог темпдб может тоже лучше на Е перекинуть ?
15 сен 11, 11:24    [11279802]     Ответить | Цитировать Сообщить модератору
 Re: Наткнулся на такую информацию, нужны разъяснения плиз...  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31969
stavgreengo
3) Лог темпдб может тоже лучше на Е перекинуть ?
Да, или на С
Но на Е скорее всего выгоднее, он же наверняка быстрее. По крайней мере, если в лог темпдб и в лог базы не пишется одновременно.
15 сен 11, 12:18    [11280375]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить