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

Откуда: Москва
Сообщений: 295
Добрый день!

Дано: SQL 2000, база 300 гиг, 2 файла данных ФГ PRIMARY, 2 файла данных ФГ INDEXES.

Подскажите пожалуйста,
1. Как заставить сервер равномерно перераспределить данные между файлами внутри ФГ?
2. Почему сервер может проводить переиндексацию и другие операции с базой в одном потоке (нагружается одно ядро)
3. Как при переиндексации заставить делать это в оффлайне и с использованием tempdb (напомню, скуль 2000, ALTER INDEX не работает!)
4. Fill Factor 80 для OLAP - это правильно, или нужно ставить другой (какой?)\
5. есть ли в 2000-м аналог sys.dm_db_index_physical_stats ?
6. К вопросу 1 - написал скрипт:
create table tNames (tName varchar(50), reindexed bit default 0)

insert into tNames
select name as tName, 0 as reindexed
from taxes01..sysobjects 
where xtype = 'u'

declare cur cursor read_only for SELECT tName FROM tNames WHERE reindexed = 0
declare @tName varchar(250)
declare @cmd nvarchar(4000)
open cur
fetch next from cur into @tName
while @@fetch_status <> -1 
begin
	set @cmd = 'DBCC DBREINDEX ("' + @tName +'", " ", 80);'
	exec sp_executesql @cmd
	update tNames set reindexed=1 where tName = @tName
	--select @cmd
	fetch next from cur into @tName
end

close cur
deallocate cur

select * from tNames where reindexed = 1

--drop tNames
Он вроде отработал, но распределение почти не изменилось (в новые файлы перешло около 5 гиг). Плюс отрабатывал в 1 потоке.

Что я сделал неправильно?

Спасибо!
23 май 11, 10:56    [10692745]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Eugene_p1
Member

Откуда: Москва
Сообщений: 295
Update:
По пункту 2: для теста запустил одновременно 2 файловые операции - шринк и добавление файла в ФГ на 10 гиг.
Все равно использует только 1 ядро. Hyperthreading выключен.
23 май 11, 11:07    [10692810]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Crimean
Member

Откуда:
Сообщений: 13147
> 1. Как заставить сервер равномерно перераспределить данные между файлами внутри ФГ?

чо?

> 2. Почему сервер может проводить переиндексацию и другие операции с базой в одном потоке (нагружается одно ядро)

версия сервера, настройки?

> 3. Как при переиндексации заставить делать это в оффлайне и с использованием tempdb
> (напомню, скуль 2000, ALTER INDEX не работает!)

в оффлайне? месье гурман
зато работает create index with drop_existing и т.п.

> 4. Fill Factor 80 для OLAP - это правильно, или нужно ставить другой (какой?)\

бред. перечитайте бол. 100%

> 5. есть ли в 2000-м аналог sys.dm_db_index_physical_stats ?

dbcc showcontig
23 май 11, 11:09    [10692827]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Glory
Member

Откуда:
Сообщений: 104751
Eugene_p1
Подскажите пожалуйста,
1. Как заставить сервер равномерно перераспределить данные между файлами внутри ФГ?

File and Filegroup Fill Strategy
Filegroups use a proportional fill strategy across all the files within each filegroup. As data is written to the filegroup, the SQL Server Database Engine writes an amount proportional to the free space in the file to each file within the filegroup, instead of writing all the data to the first file until full. It then writes to the next file. For example, if file f1 has 100 MB free and file f2 has 200 MB free, one extent is allocated from file f1, two extents from file f2, and so on. In this way, both files become full at about the same time, and simple striping is achieved.

As soon as all the files in a filegroup are full, the Database Engine automatically expands one file at a time in a round-robin manner to allow for more data, provided that the database is set to grow automatically. For example, a filegroup is made up of three files, all set to automatically grow. When space in all the files in the filegroup is exhausted, only the first file is expanded. When the first file is full and no more data can be written to the filegroup, the second file is expanded. When the second file is full and no more data can be written to the filegroup, the third file is expanded. If the third file becomes full and no more data can be written to the filegroup, the first file is expanded again, and so on.
23 май 11, 11:26    [10692930]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Crimean
Member

Откуда:
Сообщений: 13147
Eugene_p1
Update:
По пункту 2: для теста запустил одновременно 2 файловые операции - шринк и добавление файла в ФГ на 10 гиг.
Все равно использует только 1 ядро. Hyperthreading выключен.


а зачем для перераспределения страниц больше, чем 1 ядро? вот для индексации должны все использоваться, если версия сервера и настройки позволяют
23 май 11, 11:41    [10693060]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Eugene_p1
Member

Откуда: Москва
Сообщений: 295
Crimean
> 1. Как заставить сервер равномерно перераспределить данные между файлами внутри ФГ?
чо?

> 2. Почему сервер может проводить переиндексацию и другие операции с базой в одном потоке (нагружается одно ядро)
версия сервера, настройки?

> 3. Как при переиндексации заставить делать это в оффлайне и с использованием tempdb
> (напомню, скуль 2000, ALTER INDEX не работает!)
в оффлайне? месье гурман
зато работает create index with drop_existing и т.п.

> 4. Fill Factor 80 для OLAP - это правильно, или нужно ставить другой (какой?)\
бред. перечитайте бол. 100%

1. У меня база была в одном файле, 300 гиг.
Я создал дополнительные файлы. Хочу разместить их на других массивах. Мне нужно сделать так, чтобы данные были перенесены из одного файла в несколько.

2. Microsoft SQL Server 2000 - 8.00.2273 (Intel X86) Mar 7 2008 22:19:58 Copyright (c) 1988-2003 Microsoft Corporation Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

3. Create index пробовал - он сообщает, что есть constraints, и поэтому индекс не может быть дропнут.

4. Да читал. Возможно я не понял что-то. В базу всё-таки запись есть, думаю, около 10% операций. Поэтому и поставил 80%. В чем ошибка?

5. спс.
23 май 11, 11:47    [10693118]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Eugene_p1
Member

Откуда: Москва
Сообщений: 295
Crimean
Eugene_p1
Update:
По пункту 2: для теста запустил одновременно 2 файловые операции - шринк и добавление файла в ФГ на 10 гиг.
Все равно использует только 1 ядро. Hyperthreading выключен.


а зачем для перераспределения страниц больше, чем 1 ядро? вот для индексации должны все использоваться, если версия сервера и настройки позволяют

Какие настройки посмотреть? Индексировал тоже одним ядром. :(
23 май 11, 11:48    [10693122]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Glory
Member

Откуда:
Сообщений: 104751
Eugene_p1

3. Create index пробовал - он сообщает, что есть constraints, и поэтому индекс не может быть дропнут.

Наверное потому, что это не просто индекс а PrimaryKey ?
23 май 11, 11:51    [10693150]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Eugene_p1
Member

Откуда: Москва
Сообщений: 295
sp_configure
nameminimummaximumconfig_valuerun_value
affinity mask-214748364821474836471414
allow updates0100
awe enabled0111
c2 audit mode0100
cost threshold for parallelism032767600600
Cross DB Ownership Chaining0100
cursor threshold-12147483647-1-1
default full-text language0214748364710331033
default language099992121
fill factor (%)01008080
index create memory (KB)704214748364700
lightweight pooling0100
locks5000214748364700
max degree of parallelism03200
max server memory (MB)421474836471000010000
max text repl size (B)021474836476553665536
max worker threads3232767255255
media retention036500
min memory per query (KB)512214748364710241024
min server memory (MB)0214748364740004000
nested triggers0111
network packet size (B)5123276740964096
open objects0214748364700
priority boost0100
query governor cost limit0214748364700
query wait (s)-12147483647-1-1
recovery interval (min)03276700
remote access0111
remote login timeout (s)021474836472020
remote proc trans0100
remote query timeout (s)0214748364700
scan for startup procs0100
set working set size0111
show advanced options0111
two digit year cutoff1753999920492049
user connections03276700
user options03276700
23 май 11, 11:51    [10693151]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Eugene_p1
Member

Откуда: Москва
Сообщений: 295
Glory
Eugene_p1
3. Create index пробовал - он сообщает, что есть constraints, и поэтому индекс не может быть дропнут.

Наверное потому, что это не просто индекс а PrimaryKey ?

Ну да. :) Кластерный, ПК.
23 май 11, 11:52    [10693161]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Eugene_p1
Member

Откуда: Москва
Сообщений: 295
Коллеги, очень нужна ваша подсказка. Уперся в некоторое, возможно, системное непонимание, а БОЛ по 2000-му у мелкомягких нет.
Хоть вкратце ткните направление, в котором работать (но лучше всё-таки подробно :) ).

10693118
23 май 11, 13:00    [10693808]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Glory
Member

Откуда:
Сообщений: 104751
Eugene_p1
Коллеги, очень нужна ваша подсказка. Уперся в некоторое, возможно, системное непонимание, а БОЛ по 2000-му у мелкомягких нет.
Хоть вкратце ткните направление, в котором работать (но лучше всё-таки подробно :) ).

10693118

И что конкретно у вас не получилось сделать то ?
23 май 11, 13:03    [10693833]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Crimean
Member

Откуда:
Сообщений: 13147
Eugene_p1
4. Да читал. Возможно я не понял что-то. В базу всё-таки запись есть, думаю, около 10% операций. Поэтому и поставил 80%. В чем ошибка?


в неуменнии понимать прочитанное. читаем еще раз, внимательно, понимаем каждое слово. а не только то, что хотелось увидеть. если эффект не появляется - в поиск по ФФ / fillfactor / ... на форуме. копья ломались неоднократно. в БОЛ все четко написано, хотя и очень кратко.
23 май 11, 13:08    [10693877]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Eugene_p1
Member

Откуда: Москва
Сообщений: 295
Glory
Eugene_p1
Коллеги, очень нужна ваша подсказка. Уперся в некоторое, возможно, системное непонимание, а БОЛ по 2000-му у мелкомягких нет.
Хоть вкратце ткните направление, в котором работать (но лучше всё-таки подробно :) ).

10693118

И что конкретно у вас не получилось сделать то ?

Не получилось перестроить базу, чтобы данные равномерно распределились по файлам. Пока новые добавленные файлы не используются, хотя места в каждом 10 гиг. Старый файл занят на 70%.
Индексация использует только 1 ядро. Не понял, в чем может быть проблема.
23 май 11, 14:28    [10694517]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Glory
Member

Откуда:
Сообщений: 104751
Eugene_p1
Не получилось перестроить базу, чтобы данные равномерно распределились по файлам. Пока новые добавленные файлы не используются, хотя места в каждом 10 гиг. Старый файл занят на 70%.

Вы читали приведенную цитату о стратегии заполнения файлов и файловых групп ?


Eugene_p1
Индексация использует только 1 ядро. Не понял, в чем может быть проблема.

У вас cost threshold for parallelism задано 600.
23 май 11, 14:31    [10694542]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Eugene_p1
Member

Откуда: Москва
Сообщений: 295
Glory
Eugene_p1
Не получилось перестроить базу, чтобы данные равномерно распределились по файлам. Пока новые добавленные файлы не используются, хотя места в каждом 10 гиг. Старый файл занят на 70%.

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

Впрочем, ладно. Возможно, я изначально неправильно что-то делаю.
Glory, если я хочу разместить базу в нескольких файлах на разных дисках, причем не будущие, а существующие данные, как мне это сделать?
Glory
Eugene_p1
Индексация использует только 1 ядро. Не понял, в чем может быть проблема.

У вас cost threshold for parallelism задано 600.

Спс. И ведь видел же! :) Не подумал, что это может быть "лёгкий" запрос.
23 май 11, 15:26    [10694955]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Crimean
Member

Откуда:
Сообщений: 13147
размазать ФГ по файлам == перелить данные
23 май 11, 15:32    [10695008]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Glory
Member

Откуда:
Сообщений: 104751
Eugene_p1
Glory, если я хочу разместить базу в нескольких файлах на разных дисках, причем не будущие, а существующие данные, как мне это сделать?

Еще раз читаем хелп - между файлами вы не можете распределять объект
Только между файловыми группами
Для этого в синтаксисе многих команд CREATE есть опция указания в какой файловой группе должен быть создан объект
23 май 11, 15:33    [10695009]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Eugene_p1
Member

Откуда: Москва
Сообщений: 295
Glory
Eugene_p1
Glory, если я хочу разместить базу в нескольких файлах на разных дисках, причем не будущие, а существующие данные, как мне это сделать?

Еще раз читаем хелп - между файлами вы не можете распределять объект
Только между файловыми группами
Для этого в синтаксисе многих команд CREATE есть опция указания в какой файловой группе должен быть создан объект

Это я понимаю. Таким образом я перенес индексы в отдельную файловую группу.

То есть, я не могу заставить сервер "перераспределить" таблицы, распределяя их по файлам автоматически, как он бы делал при добавлении новых записей?
Или единственный путь - shrink ... emptyfile на большой файл?
23 май 11, 15:50    [10695154]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Glory
Member

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

То есть, я не могу заставить сервер "перераспределить" таблицы, распределяя их по файлам автоматически, как он бы делал при добавлении новых записей?
Или единственный путь - shrink ... emptyfile на большой файл?

- А вы знаете, что такое кластерный индекс ?
- Что значит "перераспределять ... при добавлении новых записей" ? Изменения содержимого объекта, созданного в заданной группе, осуществляются в пределах этой файловой группы
23 май 11, 15:53    [10695180]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Crimean
Member

Откуда:
Сообщений: 13147
да попробуйте уже на тестовой базке :)
если "праймари" сразу сделать на куче файлов, то они и расти будут все
как следствие - делаем ФГ, к примеру - отличную от праймари, на куче файлов, мувим тудой данные и получаем искомое
23 май 11, 15:55    [10695191]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Eugene_p1
Member

Откуда: Москва
Сообщений: 295
Итак, решил проблему запуском
DBCC SHRINKFILE ('Основной файл', EMPTYFILE)
Подождал, пока заполнятся другие файлы, потом прервал.

Криво, но результат принесло.
25 май 11, 12:14    [10705448]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Eugene_p1
Member

Откуда: Москва
Сообщений: 295
Столкнулся с интересной особенностью:
Допустим, данные в базе занимает 200 гиг, предположим, 120 данные, 80 индексы.
После создания нескольких файлов и запуска
DBCC SHRINKFILE ('Основной файл', EMPTYFILE)
сумма данных и индексов во всех файлах становится около 170-180 гиг.
Перед запуском команды fillfactor был изменен с 0 на 80. По идее, это должно вызвать рост занимаемого индексами пространства.

Вопрос - из-за чего уменьшилась база?
12 июл 11, 15:40    [10962303]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Eugene_p1
Member

Откуда: Москва
Сообщений: 295
Подниму - вопрос актуален.
13 июл 11, 12:45    [10966748]     Ответить | Цитировать Сообщить модератору
 Re: несколько вопросов по MS SQL Server 2000  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Eugene_p1
Столкнулся с интересной особенностью:
Допустим, данные в базе занимает 200 гиг, предположим, 120 данные, 80 индексы.
После создания нескольких файлов и запуска
DBCC SHRINKFILE ('Основной файл', EMPTYFILE)
сумма данных и индексов во всех файлах становится около 170-180 гиг.
Перед запуском команды fillfactor был изменен с 0 на 80. По идее, это должно вызвать рост занимаемого индексами пространства.

Вопрос - из-за чего уменьшилась база?
А какое отношение fillfactor имеет к шринку?
13 июл 11, 13:31    [10967170]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить