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

Откуда:
Сообщений: 710
Здравствуйте, уважаемые коллеги !!!
Продолжаем борьбу, наше дело правое, мы победим :) MS SQL2000 SP4 Предистория.
После анализа характера взаимодействия с базой выяснил что всё спотыкается по IOP\s при обращении к 6-8 крупным таблицам одновременно большим количеством всяко разно запросов ещё и джойня их между собой бывая. В связи с этим хочу разнести часть из этих активно нагруженных таблиц на другой дисковый массив(к ОС их поженить, там RAID 1 и он по дисковой нагрузке курит). На данный момент архитектура - это только PRIMARY файловая группа и один mdf файл.

Как будет лучше организовать, вынести ndf файлом той же PRIMARY фг или создать новую фг и вынести уже в ней ? Не будет ли лучше вариант с секционированием всех этих 6-8 таблиц ?
28 дек 12, 09:32    [13698686]     Ответить | Цитировать Сообщить модератору
 Re: Вынос части таблиц в другой ndf файл !!!  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
stavgreengo
создать новую фг и вынести уже в ней

нужно создавать нговую ФГ, если добавите в примари еще один файл, то все равно никто не даст уверенность,что именно в этих файлах будут Ваши таблицы (сервер сам занимается размещением объектов ФГ по файлам, т.е. нельзя управлять)

stavgreengo
Не будет ли лучше вариант с секционированием всех этих 6-8 таблиц ?

в 2000 нет секционирования, как такового, но есть секционированные вью. если номально все сделать, то есть верятность, что секционированное вью немного облегчит работу сеовера
28 дек 12, 10:00    [13698814]     Ответить | Цитировать Сообщить модератору
 Re: Вынос части таблиц в другой ndf файл !!!  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31987
stavgreengo
Как будет лучше организовать, вынести ndf файлом той же PRIMARY фг или создать новую фг и вынести уже в ней ?
Вынести ndf файлом той же PRIMARY фг - плохо, поскольку у вас несиметричные массивы (были бы одинаковые - тогда это было бы самое эффективное).

Секционирование тоже в 2000 плохое.

Так что можно сделать отдельную ФГ, и вынсти таблицы или индексы.
28 дек 12, 10:10    [13698882]     Ответить | Цитировать Сообщить модератору
 Re: Вынос части таблиц в другой ndf файл !!!  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
HandKot, спасибо !!! Теперь такой вопрос, какие варианты переноса таблиц в другую ФГ у нас есть кроме bcp ? Как проще будет ?
28 дек 12, 10:11    [13698885]     Ответить | Цитировать Сообщить модератору
 Re: Вынос части таблиц в другой ndf файл !!!  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31987
HandKot
если добавите в примари еще один файл, то все равно никто не даст уверенность,что именно в этих файлах будут Ваши таблицы (сервер сам занимается размещением объектов ФГ по файлам, т.е. нельзя управлять)
Не, если массивы были бы одинаковые, то нормально - сиквел распрелделит нагрузку равномерно (ну понятно, нужно будет после создания файла перераспределить)
28 дек 12, 10:12    [13698896]     Ответить | Цитировать Сообщить модератору
 Re: Вынос части таблиц в другой ndf файл !!!  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
пересоздать кластерный инжекс на новой ФГ
28 дек 12, 10:12    [13698900]     Ответить | Цитировать Сообщить модератору
 Re: Вынос части таблиц в другой ndf файл !!!  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31987
stavgreengo
Теперь такой вопрос, какие варианты переноса таблиц в другую ФГ у нас есть кроме bcp ? Как проще будет ?
Пересоздать кластерный индекс у таблицы.
28 дек 12, 10:13    [13698901]     Ответить | Цитировать Сообщить модератору
 Re: Вынос части таблиц в другой ndf файл !!!  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
М-да, точно, забыл, ещё раз огромное всем спасибо, с наступающим коллеги :)
28 дек 12, 11:13    [13699339]     Ответить | Цитировать Сообщить модератору
 Re: Вынос части таблиц в другой ndf файл !!!  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
Существует ли какой либо визард для подобного рода переносов? А то таблиц много и руками переносить тяжко и долго. Да и разработчики колбасят без перекура :)
19 фев 13, 12:03    [13947581]     Ответить | Цитировать Сообщить модератору
 Re: Вынос части таблиц в другой ndf файл !!!  [new]
Glory
Member

Откуда:
Сообщений: 104751
NickAlex66
Существует ли какой либо визард для подобного рода переносов?

Нет.

NickAlex66
А то таблиц много и руками переносить тяжко и долго. Да и разработчики колбасят без перекура :)

Напишите скрипт.
19 фев 13, 12:07    [13947622]     Ответить | Цитировать Сообщить модератору
 Re: Вынос части таблиц в другой ndf файл !!!  [new]
Гость333
Member

Откуда:
Сообщений: 3683
NickAlex66
руками переносить

А как именно вы "переносите руками"? Это какая-то последовательность действий в SSMS, или какой-то скрипт, или ещё что-то?
19 фев 13, 12:10    [13947647]     Ответить | Цитировать Сообщить модератору
 Re: Вынос части таблиц в другой ndf файл !!!  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
Гость333,

Скрипт: в дизайнере таблицы открываю свойства, выбираю нужную ФГ, получаю скрипт для этой таблицы. Правлю, если нужно. Присоединяю к общему скрипту для всех таблиц. Как то так.
19 фев 13, 12:36    [13947799]     Ответить | Цитировать Сообщить модератору
 Re: Вынос части таблиц в другой ndf файл !!!  [new]
Glory
Member

Откуда:
Сообщений: 104751
NickAlex66
Скрипт: в дизайнере таблицы открываю свойства, выбираю нужную ФГ, получаю скрипт для этой таблицы. Правлю, если нужно. Присоединяю к общему скрипту для всех таблиц. Как то так.

Что вам мешает написать скрипт, который так же, как и студию, сгенерирует такие команды для каждой нужной таблицы ?
19 фев 13, 12:37    [13947807]     Ответить | Цитировать Сообщить модератору
 Re: Вынос части таблиц в другой ndf файл !!!  [new]
NickAlex66
Member

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

Полагаю задачка по созданию универсального (адекватного для любой базы в любое время) скрипта займет много времени, а сама операция разведения таблиц по новым ФГ разовая. Потому и спросил про визард :)
19 фев 13, 12:50    [13947890]     Ответить | Цитировать Сообщить модератору
 Re: Вынос части таблиц в другой ndf файл !!!  [new]
Glory
Member

Откуда:
Сообщений: 104751
NickAlex66
Полагаю задачка по созданию универсального (адекватного для любой базы в любое время) скрипта займет много времени

На чем основаны ваше "полагаю" ?
19 фев 13, 12:58    [13947942]     Ответить | Цитировать Сообщить модератору
 Re: Вынос части таблиц в другой ndf файл !!!  [new]
NickAlex66
Member

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

Собрать инфу по всем индексам, полям для них, констрейтам, связанным объектам, может еще чего. Плюс к этому надо переносить порезанные на партиции таблицы. В процессе переноса надо порезать еще четыре. Все это придется реализовывать через динамику. Объем работ представляете? А база 200гиг.
19 фев 13, 13:09    [13948008]     Ответить | Цитировать Сообщить модератору
 Re: Вынос части таблиц в другой ndf файл !!!  [new]
Glory
Member

Откуда:
Сообщений: 104751
NickAlex66
Объем работ представляете?

Один курсор с "пересоздать кластерный индекс на новой ФГ"
19 фев 13, 13:13    [13948045]     Ответить | Цитировать Сообщить модератору
 Re: Вынос части таблиц в другой ndf файл !!!  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
универсального решения не существует, тут только глаза протирать в "Spotlight on SQL Server" или другой аналогичной системе мониторинга, затем пробовать по чуть-чуть переносить и следить за распределением стандартной пользовательской нагрузки в течении дня по I\O by file и соответственно wait time, средней очереди к диску, busy % disk и т.д. и т.п.
19 фев 13, 13:16    [13948061]     Ответить | Цитировать Сообщить модератору
 Re: Вынос части таблиц в другой ndf файл !!!  [new]
Гость333
Member

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

Собрать инфу по всем индексам, полям для них, констрейтам, связанным объектам, может еще чего. Плюс к этому надо переносить порезанные на партиции таблицы. В процессе переноса надо порезать еще четыре. Все это придется реализовывать через динамику. Объем работ представляете? А база 200гиг.

Круто. Это всё дизайнер таблиц делает в своих скриптах? Он что ли создаёт новую таблицу, переливает данные и дропает старую? Можно пример подобного скрипта? (Дизайнером таблиц никогда не пользовался и не знаю, что там к чему).
19 фев 13, 13:31    [13948162]     Ответить | Цитировать Сообщить модератору
 Re: Вынос части таблиц в другой ndf файл !!!  [new]
NickAlex66
Member

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

Для больших таблиц необходимо сначала дропнуть ВСЕ индексы и только потом создавать кластер на нужной ФГ и затем уже создавать не кластерные на нужных ФГ. Это быстрее, чем наоборот. Да и внешние ключи в некоторых случаях придется дропать.
Времени на доведения базы до ума руками после такого переноса не будет - работаем 24х7.
В общем скрипт готов. Правда работает 3ч15м. Многовато, придется по частям переносить - быстрее не сделать, оптимизировал все, что мог. При этом держать за руки разработчиков :)
19 фев 13, 13:33    [13948180]     Ответить | Цитировать Сообщить модератору
 Re: Вынос части таблиц в другой ndf файл !!!  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
Гость333,

попробуйте, время много не займет :)
ЗЫ: студия генерит универсальный скрипт, но в случае переноса больших таблиц предлагаемый метод слишком медлителен.
19 фев 13, 13:37    [13948219]     Ответить | Цитировать Сообщить модератору
 Re: Вынос части таблиц в другой ndf файл !!!  [new]
Гость333
Member

Откуда:
Сообщений: 3683
NickAlex66
Гость333,

попробуйте, время много не займет :)

Ок, только намекните, куда нажимать, чтобы вылез этот дизайнер :-)
У нас-то всё делается DDL-скриптами, чтобы потом задеплоить изменения на нужные стенды и нужным заказчикам.
19 фев 13, 13:47    [13948310]     Ответить | Цитировать Сообщить модератору
 Re: Вынос части таблиц в другой ndf файл !!!  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
Гость333,

Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (Intel X86) Jun 28 2012 08:42:37 Copyright (c) Microsoft Corporation Enterprise Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)

К сообщению приложен файл. Размер - 69Kb
19 фев 13, 14:21    [13948593]     Ответить | Цитировать Сообщить модератору
 Re: Вынос части таблиц в другой ndf файл !!!  [new]
Гость333
Member

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

Нашёл, это мне нужно было в дизайнере нажать F4, чтобы появилось окошко Properties.
Ну да, как я и предполагал, создаётся новая таблица, в неё переливаются данные, старая таблица удаляется. Не, это же не наш метод (c).
19 фев 13, 14:46    [13948826]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить