|
Смена железа
|
|||
---|---|---|---|
#18+
В основном отчеты варим - с кучей SQL запросов, которые генерятся на клиенте. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2000, 13:59 |
|
Смена железа
|
|||
---|---|---|---|
#18+
Есть дисциплина "Оценка производительности вычислительных систем".Для того чтобы определить как возрастёт (ли) производительность системы , в данном варианте надо рассмотреть какие запросы формируются для сервера - то есть если 50 юзеров выполнят Select * from tbl left join where по 1000 записей то всё ограничется пропускной способность сети , а вот если будут выполняться хранимые процедуры что - то в виде : -- create procedure .... declare @LeafLevel integer declare @Sequence integer declare @line varchar(1024) delete from HTB_00000000 create table #Stack ( MemberID integer, LeafLevel integer ) insert into #Stack values ( @MemberID, 1) select @LeafLevel = 1 select @Sequence = 1 while @LeafLevel > 0 begin if exists (select * from #Stack where LeafLevel = @LeafLevel ) begin select @MemberID = MemberID from #Stack where LeafLevel = @LeafLevel -- insert into HTB_00000000 values ( @Sequence,@LeafLevel,@MemberID ) select @Sequence = @Sequence+1 -- delete from #Stack where LeafLevel = @LeafLevel and MemberID = @MemberID insert #Stack select dbo.Member.MemberID, @LeafLevel + 1 from dbo.Member where OwnerID = @MemberID if @@rowcount > 0 select @LeafLevel = @LeafLevel + 1 end else select @LeafLevel = @LeafLevel- 1 end изначально членов около 14000 и глубина дерева - 60 -70 то время запроса будет варьироваться следующим образом Один проц Duron 700 - 11 мин два Дюрона - 4 мин но паралельном запросе с двух машин , во втором случае порядка 7 мин (всё дерево), если запросы с разных вершин дерева ( не пересекающиеся ) то где-то все те же 4 мин. А вообще-то странный этот NT .... и его распаралеливание процессов. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2000, 15:02 |
|
Смена железа
|
|||
---|---|---|---|
#18+
Автоматическое решение о том, применять ли параллельную обработку запросов, в SQL Server 7.0 зависит от ответов на следующие вопросы: 1. Работает ли SQL Server на компьютере с несколькими процессорами (SMP-машине)? Параллельные запросы могут выполняться только на компьютерах, включающих более одного процессора. 2. Используете ли вы SQL Server 7.0 версии Desktop, Standard или Enterprise? SQL Server Desktop Edition поддерживает до двух процессоров, Standard Edition может работать с четырьмя процессорами, а Enterprise Edition — с восемью. 3. Сколько активных пользователей в настоящее время обращаются к серверу? SQL Server следит за использованием процессоров и корректирует степень параллельности в момент запуска запроса. Если процессоры заняты, он выбирает более низкий уровень параллельности. 4. Достаточно ли доступной памяти для параллельного выполнения запроса? Каждому запросу для работы нужен определенный объем памяти, причем параллельные запросы требуют больше памяти, чем непараллельные. Объем памяти, необходимый для выполнения параллельного запроса, увеличивается с ростом степени параллельности. Если требования параллельного плана к памяти невозможно удовлетворить при данной степени параллельности, SQL Server автоматически уменьшает ее или совершенно отказывается от параллельного плана запроса в условиях текущей нагрузки и выполняет последовательный план. 5. Каков тип выполняемого запроса? Лучшими кандидатами для параллельного выполнения будут запросы, использующие много тактов процессора. Примером таких задач могут служить соединения больших таблиц, обширные агрегации или сортировки больших наборов данных. Оказывается, что для простых запросов, которые часто встречаются в приложениях обработки транзакций, необходимая при параллельном выполнении дополнительная координация перевешивает потенциальный выигрыш в производительности. Чтобы узнать, в каких запросах параллельность будет полезна, а в каких нет, SQL Server сравнивает оценку затрат на выполнение запроса с порогом затрат для параллелизации. Администраторы могут изменить заданное по умолчанию значение порога, хотя делать это не рекомендуется. 6. Достаточно ли строк в данном конкретном потоке? Если оптимизатор запросов определяет, что число строк в потоке слишком мало, он не включает в план параллельные операторы. Выполнение последовательного плана позволяет избежать ситуации, когда затраты на запуск, распределение и координацию потоков превысят выигрыш, связанный с параллельным выполнением. Это в догонку из "Процессор запросов Microsoft SQL Server 7.0" Гетц Грефе, Джим Эвел и Сезар Галиндо-Легариа ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2000, 15:23 |
|
Смена железа
|
|||
---|---|---|---|
#18+
Спасибо всем за отклик. В основном запросы SELECT SUM(Field1) FROM TABLE WHERE DATE1>'01.12.2000' AND и т.д. Если работает один процесс с генерацией отчетов, то при подключение второго процесса с другой машины скорость падает ровно в два раза. Думаю надо брать, а что такое проц Duron-а? Извените за ламерство ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2000, 17:13 |
|
Смена железа
|
|||
---|---|---|---|
#18+
К стати, в варианте select SUM( Field) from ... where ... having sum( Field2) > .... Возможно , что суммирование выполняется не на сервере а на рабочей станции - сие происходит в BDE если установлен диалект SQL local а не SERVER и как результат сначала выбираются записи а потом они подсчитываются - повышение траффика сети и замедление работы . Я проверил суммировании порядка 9000 записей - ответ менее 1 сек на рабочих станциях : select Orders.MemberID, LastName, FirstName, sum(ValueTotal) from Orders Left join Member On ( Member.MemberID = Orders.MemberID ) where OrderType = 0 AND ReportMonth = '01.11.2000' Group By Orders.MemberID, LastName, FirstName Having sum( ValueTotal ) >= 150 Order By LastName ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2000, 09:37 |
|
|
start [/forum/topic.php?fid=46&gotonew=1&tid=1827533]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
10ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 117ms |
0 / 0 |