Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Распределение данных между файлами в БД  [new]
pugovka
Member

Откуда:
Сообщений: 36
Добрый день.
Подскажите, пожалуйста, есть бд обьемом 85 gb (версия SQL - SQL Server 2012 SP2 CU7), состоит из одного файла mdf и ldf.
Необходимо добавить в бд еще один файл .ndf и равномерно распределить данные по файлам mdf и ndf. возможно ли это сделать стандартными средствами SQL Server?
Тестировался такой вариант:
- включить флаг трассировки 1117,
- добавить файл .ndf аналогичного размера файлу .mdf,
- затем выполнить rebuild/reorganize индексов всей бд. Файл .ndf частично заполнился информацией, но этого недостаточно.
8 окт 15, 17:11    [18254387]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37225
pugovka
включить флаг трассировки 1117
Для чего?
pugovka
затем выполнить rebuild/reorganize индексов всей бд. Файл .ndf частично заполнился информацией, но этого недостаточно.
И кучи вы тоже ребилдили?

Сообщение было отредактировано: 8 окт 15, 17:22
8 окт 15, 17:22    [18254445]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
pugovka
Member

Откуда:
Сообщений: 36
- флаг 1117 - для равномерного заполнения файлов БД
- как выполнять ребилд кучи - ALTER TABLE ... REBUILD? Можно ли тогда запустить сразу по всем таблицам?
8 окт 15, 17:39    [18254527]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37225
pugovka
- как выполнять ребилд кучи - ALTER TABLE ... REBUILD?
Если версия сервера не поддерживает ALTER TABLE ... REBUILD, то через создание и удаление кластерного индекса.
8 окт 15, 17:43    [18254549]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
o-o
Guest
чего это 2012 не поддерживает, в 2008 появилось
8 окт 15, 17:46    [18254570]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
pugovka
Member

Откуда:
Сообщений: 36
кроме ALTER TABLE/INDEX REBUILD…ONLINE есть еще какие-нибудь варианты?
8 окт 15, 17:50    [18254584]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37225
pugovka
кроме ALTER TABLE/INDEX REBUILD…ONLINE есть еще какие-нибудь варианты?
выгрузить все в файлы, удалить, загрузить обратно.
8 окт 15, 17:51    [18254587]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
pugovka
Member

Откуда:
Сообщений: 36
т.е. через wizard export data.../import data...?
8 окт 15, 17:52    [18254596]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
o-o
Guest
pugovka
кроме ALTER TABLE/INDEX REBUILD…ONLINE есть еще какие-нибудь варианты?

оффлайно можно. еще и быстрее будет
8 окт 15, 17:53    [18254597]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8570
pugovka, зачем вам требуется разбивать базу на файлы таким образом?
8 окт 15, 18:10    [18254648]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
0-0
Guest
pugovka
равномерно распределить данные по файлам mdf и ndf.

А для чего это? Какую задачу пытаетесь решить таким способом?
8 окт 15, 18:15    [18254671]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
invm
Member

Откуда: Москва
Сообщений: 9722
pugovka
затем выполнить rebuild/reorganize индексов всей бд
Не поможет.

Нужно:
1. alter table rebuild для всех таблиц.
2. alter index rebuild для всех некластерных индексов таблиц с кластерным.
3. Отдельно перезалить BLOB'ы.

Возможно быстрее и правильнее будет подготовить новую БД нужной структуры и перелить туда данные.
8 окт 15, 20:21    [18255246]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
pugovka
Member

Откуда:
Сообщений: 36
invm,
Можно ли выполнить alter table rebuild по всем таблицам БД сразу?
9 окт 15, 09:42    [18256883]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
Glory
Member

Откуда:
Сообщений: 104751
pugovka
Можно ли выполнить alter table rebuild по всем таблицам БД сразу?

Попробуйте узнать в хелпе по alter table, какой синтаскис разрешен для этой команды
9 окт 15, 09:47    [18256910]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
o-o
Guest
pugovka
Можно ли выполнить alter table rebuild по всем таблицам БД сразу?

есть недокументированная sp_MSforeachtable,
можно так:
exec sp_MSforeachtable 'alter table ? rebuild'

только если вылезет какое-нибудь
Msg 1934, Level 16, State 1, Line 1
ALTER TABLE failed because the following SET options have incorrect settings: 'QUOTED_IDENTIFIER'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations.

не узнаете, на чем именно.
а так гребет всех подряд, кластерные таблицы и кучи
9 окт 15, 11:27    [18257616]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8570
0-0
pugovka
равномерно распределить данные по файлам mdf и ndf.

А для чего это? Какую задачу пытаетесь решить таким способом?


Секретная тема, видимо :-)
9 окт 15, 12:04    [18257904]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
pugovka
Member

Откуда:
Сообщений: 36
Владислав Колосов,

нет, не секретная. распределить нагрузку
9 окт 15, 12:08    [18257938]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
ndf частично заполнился
Guest
pugovka,

О! я бедный файл! я вешу 85ГБ! убейте меня... оу-оу пристрелить не поднялась рука, есаул, за крутые берега

перекладывание может иметь смысл с (некластерными) индексами, но в другую файловую группу
что-то там с отдельно взятыми, допустим, самыми большими таблицами, тоже в отдельную файловую группу

дополнительные ndf файлы типо для распараллеливания записи можно просто добавить и все

автор
Файл .ndf частично заполнился информацией, но этого недостаточно.

назовите линейку, которой было измерено "недостаточно".
автор
распределить нагрузку

чтение, блокировки, проц, сплиты, сканы, кривые запросы не распределятся

есть нестандартный для данного форума вариант развития темы, но можно попробовать:
озвучьте проблему/задачу, а не свой вариант решения
9 окт 15, 12:23    [18258038]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
Eleanor
Member

Откуда:
Сообщений: 3328
pugovka, по исходному вопросу:

- создаете 1.ndf
- выполняете DBCC SHRINKFILE ... EMPTYFILE на mdf
- создаете 2.ndf
- выполняете DBCC SHRINKFILE ... EMPTYFILE на 1.ndf
- в итоге данные поделятся между mdf и 2.ndf
9 окт 15, 13:13    [18258311]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37225
ndf частично заполнился
перекладывание может иметь смысл с (некластерными) индексами, но в другую файловую группу
что-то там с отдельно взятыми, допустим, самыми большими таблицами, тоже в отдельную файловую группу
Не обязательно делить неравномерно. Разделение, которые пытается сделать автор топика, будет иметь вполне себе смысл при появлении второго аналогичного по производительности массива и невозможности собрать их в рейд.
9 окт 15, 13:25    [18258404]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8570
Непонятно, зачем распределять, Вы не имеете возможность оптимизировать код? Если файлы находятся в пределах одного физического хранилища, то это не имеет особого смысла.
9 окт 15, 13:37    [18258511]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
pugovka
Member

Откуда:
Сообщений: 36
Eleanor,

команда DBCC SHRINKFILE ... EMPTYFILE выполняет миграцию всех данных из указанного файла в другие файлы в той же файловой группе, т.е. если я правильно понимаю после выполнения данной команды все данные из mdf файла перенесутся в ndf.
11 окт 15, 19:53    [18264769]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
Glory
Member

Откуда:
Сообщений: 104751
pugovka
т.е. если я правильно понимаю после выполнения данной команды все данные из mdf файла перенесутся в ndf

Первичный файл невозможно полностью очитстить от данных
11 окт 15, 20:10    [18264815]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
beggar_21
Member

Откуда:
Сообщений: 27
У меня сходная задача. Есть виртуальная машина и я могу присоединять диски но объединять могу их только создав виндовый stiped раздел. Я хочу распределить нагрузку на диски создав несколько файлов в одной файловой группе и поместив файлы на разные диски. У меня в файловой группе хранится одна таблица ну очень большая (500ГБ). Изначально для этой таблицы у меня была одна файловая группа и один файл в ней. Я создал ещё два файла в этой группе и шринканул первый с удалением. Но выполняется эта операция очень долго. Смотрю на активность сервера в чтении/записи с файлами группы - как-то очень всё лениво всё происходит. В чем причина кто нибудь знает?
11 окт 15, 20:14    [18264832]     Ответить | Цитировать Сообщить модератору
 Re: Распределение данных между файлами в БД  [new]
pugovka
Member

Откуда:
Сообщений: 36
Glory,

выполнила данную команду на тестовой среде: из 85 gb в файле mdf осталось 960 kb, все остальные данные переехали в файл ndf
11 окт 15, 20:15    [18264835]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить