a_shats
Сообщение
a_shats » 13 фев 2003, 14:18
Если есть опыт работы с профайлером — то нужно не только отстраивать конфигурацию, но и — ловить проблемы в структуре (производительность наиболее часто выполняющихся запросов, и, соответственно, оптимизация их — поверьте, даже в самой сложной системе этих н.ч.п. запросов не более десятка-двух).
Если нет — то не заморачиваться запросами, а: к софтине есть инструкция — наверняка. У клиента есть некие последовательности действий (их тоже немного, как правило- ввод документа(подгрузка справочников, вставка записи), выполнение отчетов (далеко не все отчеты выполняются постоянно — проконсультируйтесь с теми, кто будет непосредственно работать, что им конкретно чаще всего нужно), административно-технические задачи (раздача прав, онлайновая репликация — если есть)- это и в одном экземпляре можно, но — на фоне нагрузки от «работающих» клиентов). Вот эти-то простейшие клиентские задачи, выполняемые в соответствии с инструкцией, и запускайте. Если есть возможность сделать это скриптом — вообще было бы идеально.
И еще: «идеальная» последовательность настроек примерно такова:
1. Отстраиваете «стартовую» конфигурацию сервера(тесты и подстройки в течение примерно недели), как описал выше, если есть возможность — на этом этапе выявляются наиболее видимые/грубые грабли(как с железом. так и с софтом).
2. «тестовый пуск» — в пределах месяца (т.е. люди уже работают, но Вы за всем этим оччень внимательно наблюдаете). Собираете при этом всю доступную информацию о нагрузках и их распределении (в т.ч. профайлером и перфмоном), в конце каждой недели — анализируете полученную статистику и производите более точную настройку — как SQL, так и всего остального.
3. В конце месяца — подбиваете статистику, окончательно выявляете узкие места и закрываете их — с запасом (зависит от темпов роста нагрузки в течение тестового месяца). Причем — как софтом, так и — железом.
4. Запускаем — работает ? Если да, то все ок.
Вот, собственно…
In this article I will explain how to configure SQL Server Instance through SSMS. Right-click on the instance via SSMS and click properties.
You will see general information on the General tab.
Memory Settings
When we switch to the Memory tab, we see “Minimum server memory (in MB):” and “Maximum server memory (in MB):“. In this section, we can set the minimum and maximum memory that SQL Server Instance will use. Some concepts must be well understood for setting memory correctly. You can find the details in the article “Numa Nodes, MAX/MIN Server Memory, Log Pages In Memory and MAXDOP“.
In Other memory options;
“Index creation memory(in KB, 0=dynamic memory);” value indicates the minimum memory value to be allocated for sort operations when creating an index. I don’t recommend changing this value unless you have a specific problem when creating an index.
“Minimum memory per query (in KB);” value indicates the minimum amount of memory to be allocated for a query, as the name implies. I do not recommend changing this default value unless you have a specific need.
Processors Settings
On the Processors tab, in the Enable processors section,
Processor Affinity in SQL Server
If you select the “Automatically set processor affinity mask for all processor” option, threads are automatically distributed across all CPUs.
I/O Affinity in SQL Server
If you select the “Automatically set I/O affinity mask for all processors” option, sql server automatically distributes I/O related operations to all CPUs.
By not selecting these two options, you can distribute workloads between CPUs specifically as follows, but I wouldn’t recommend it. By selecting the first two options, we must ensure that the workload distribution is automatic. This is the default.
I recommend not changing the Maximum worker threads setting. 0 indicates that it is set automatically.
If you select the Boost SQL Server priority option, you increase the priority of SQL Server according to other services running on the operating system. I have not chosen this option so far in the environments I manage.
If you select the Use Windows fibers option, you can reduce the workload of some processes that are seen in symmetric multiprocessing (SMP) environments. I have not chosen this option until now in the environments I manage.
Security Settings
Server Authentication
If you select Windows Authentication mode from Server authentication in Security, you can only connect to SQL Instance with windows accounts.
If you select SQL server and Windows Authentication mode, you can connect to SQL Instance with both sql logins and windows logins. You can find detailed information in the article “How To Create a Login On SQL Server(Manage Logins)“.
Login Auditing
If you select Failed logins only in login auditing, SQL Server logs the failed logins in the Error Log.
Database Settings
In Database Settings, you can set the default index fill factor, enable compress backup, and set default paths to create databases.
Recovery inteval; This is the upper limit required to recover databases after restarting SQL Server. Default value is 0 which means that an automatic checkpoint occurs every 60 seconds. Do not change this configuration if you do not know what you do. If you want to understand database recovery operations and checkpoint, you may want to read the articles “What is Database Checkpoint” and “What is SQL Server Transaction Log”
In the Advanced tab, we can make many settings such as file stream, contained database, maxdop. You can find detailed information in the following articles. You can also use the Search section on many topics you are looking for.
“What is File Stream On SQL Server“,
“What is Contained Database and How To Create“,
“Numa Nodes, MAX/MIN Server Memory, Log Pages In Memory and MAXDOP”
Finally, you can grant permission to a login at the instance level from the permissions tab.
Параметры конфигурирования
SQL Server
SQL Server 2000 является практически самонастраиваемой системой, но вы все же можете изменять способ работу вашей системы, модифицируя значения определенных параметров конфигурирования. В этом разделе вы узнаете, как конфигурировать эти параметры и как они влияют на работу вашей системы. Скорее всего, вам не потребуется изменять эти параметры, но знание их возможностей позволяет вам решать, нужно ли вам их изменение. Вы можете конфигурировать эти параметры с помощью Enterprise Manager или с помощью хранимой процедуры T-SQL sp_configure.
Чтобы использовать Enterprise Manager, щелкните правой кнопкой мыши на имени сервера, который вы хотите конфигурировать, и выберите из контекстного меню пункт Properties (Свойства), чтобы появилось окно SQL Server Properties. Это окно содержит девять вкладок, и каждая вкладка содержит параметры, которые вы можете конфигурировать. Эти вкладки и соответствующие параметры описаны в следующих разделах.
Используя sp_configure для конфигурирования этих параметров, вы должны помнить, что определенные параметры считаются дополнительными (advanced options). (В следующих разделах указывается, какие параметры являются дополнительными.) Для изменения какого-либо дополнительного параметра с помощью sp_configure вы должны задать для параметра show advanced options (показать дополнительные параметры) значение 1 (активизировать). Для этого параметра по умолчанию задано значение 0 (деактивизировать). (Этот параметр не оказывает влияния на дополнительные параметры, если вы используете Enterprise Manager.) Чтобы активизировать параметр show advanced options, используйте следующий оператор:
sp_configure "show advanced options", 1 GO
Обычно для установки любого параметра с помощью sp_configure используется следующий синтаксис:
sp_configure "имя параметра", значение
Параметр affinity mask
Параметр affinity mask (маска «родственности») используется, чтобы указывать, на каких ЦП могут выполняться потоки SQL Server в многопроцессорной среде. Значение 0 (принятое по умолчанию) указывает, что родственность потоков определяется алгоритмами планировщика Windows 2000. Ненулевое значение задает битовую маску, определяющую ЦП, на которых могут выполняться потоки SQL Server. Десятичное значение 1 (или двоичное значение маски 00000001) указывает, что может использоваться только ЦП 1; значение 2 (или 00000010) указывает использование только ЦП 2; 3 (или 00000011) указывает использование ЦП 1 и ЦП 2, и т.д.
Этот параметр относится к группе дополнительных параметров, поэтому для его конфигурирования с помощью sp_configure вы должны задать для параметра show advanced options значение 1. Вы можете также конфигурировать параметр affinity mask с помощью Enterprise Manager. Для этого щелкните на вкладке Processor (Процессор) в окне SQL Server Properties и в секции Processor Control (Управление процессорами) установите флажки перед каждым ЦП (CPU), который хотите использовать для SQL Server. Щелкните на кнопке Apply (Применить) и затем щелкните на кнопке OK, чтобы сохранить данное изменение. Чтобы это изменение начало действовать, вы должны закрыть и перезапустить SQL Server.
В системе, выделенной только для SQL Server, вы должны задать такое значение параметра affinity mask, чтобы использовать для SQL Server все ЦП. В системе, которая не полностью выделена для SQL Server (то есть содержит другие процессы, которым требуется время ЦП) вам, возможно, потребуется задать такую маску, чтобы для SQL Server использовались все ЦП, кроме одного.
Параметр lightweight pooling
Параметр lightweight pooling (упрощенная организация пула) используется чтобы сконфигурировать SQL Server для использования упрощенных потоков (или «волокон» – fibers). Использование «волокон» может снизить количество переключений контекста за счет того, что планирование процессов выполняет SQL Server (а не планировщик Windows NT или Windows 2000). Если ваше приложение выполняется в многопроцессорной системе и вы видите много переключений контекста, то можете попытаться задать для параметра lightweight pooling значение 1, которое активизирует упрощенную организацию пула, и затем снова выполнить мониторинг количества переключений контекста, чтобы убедиться в снижении этого количества. Значение по умолчанию – 0 (запрещение использования «волокон»).
Параметр lightweight pooling относится к группе дополнительных параметров, поэтому его можно конфигурировать с помощью sp_configure, если для параметра show advanced options задано значение 1. Вы можете также конфигурировать lightweight pooling с помощью Enterprise Manager. Щелкните на вкладке Processor в окне SQL Server Properties и в секции Processor Control установите флажок Use Windows NT Fibers (Использовать «волокна» Windows NT) для его активизации или сбросьте этот флажок для деактивизации параметра. Щелкните на кнопке Apply, щелкните на кнопке OK и затем закройте и перезапустите SQL Server, чтобы этот параметр начал действовать.
Параметр max server memory
SQL Server динамически выделяет память. Чтобы задать максимальное количество памяти (в мегабайтах), которое SQL Server может выделить для буферного пула, вы можете использовать параметр max server memory (максимальная память для сервера). Поскольку SQL Server требуется определенное время для освобождения памяти, если у вас есть другие приложения, которым периодически нужна память, то для параметра max server memory можно задать такое значение, чтобы SQL Server оставлял определенную часть памяти свободной для других приложений. Значение по умолчанию – 2147483647 – означает, что SQL Server будет забирать у системы максимально возможное количество памяти, динамически освобождая память, когда она требуется другим приложениям, и снова захватывая память, когда эти приложения освобождают ее. Это рекомендованное значение для выделенной системы SQL Server. Если вы хотите изменить это значение, рассчитайте максимальный объем памяти, который вы можете предоставить SQL Server, вычитая из полного объема физической памяти количество памяти, необходимое для Windows 2000, а также для любых приложений, не относящихся к SQL Server.
Этот параметр относится к группе дополнительных параметров, поэтому для его конфигурирования с помощью sp_configure вы должны задать значение 1 для параметра show advanced options. Для задания этого параметра с помощью Enterprise Manager щелкните на вкладке Memory (Память) в окне SQL Server Properties и используйте движок Maximum (MB) (Максимум [Мб]). Затем щелкните опцию Dynamically Configure SQL Server Memory (Динамическое конфигурирование памяти SQL Server). Этот параметр начинает действовать сразу – без необходимости закрытия и повторного запуска SQL Server. (Если щелкнуть опцию Use A Fixed Memory Size [Использовать фиксированный размер памяти], то SQL Server выделит память до указанного объема и затем уже не будет освобождать память.)
Параметр min server memory
Параметр min server memory (минимальная память для сервера) используется для указания минимального количества памяти (в мегабайтах), которое должно выделяться для буферного пула SQL Server. Устанавливать этот параметр полезно в системах, где SQL Server, возможно, резервирует слишком много памяти для других приложений. Например, в среде, где данный сервер используется для служб печати и файловых служб, а также для служб базы данных, SQL Server должен «уступать» слишком много памяти другим приложениям. Это приводит к увеличению времени отклика для пользователей. Значение по умолчанию min server memory равно 0, что позволяет SQL Server динамически забирать и освобождать память. Это рекомендованное значение, но вам может потребоваться его изменение, если ваш сервер не полностью выделен для SQL Server.
Этот параметр относится к группе дополнительных параметров, поэтому для его конфигурирования с помощью sp_configure вы должны задать значение 1 для параметра show advanced options. Вы можете также сконфигурировать его с помощью Enterprise Manager. Щелкните на вкладке Memory (Память) в окне SQL Server Properties, используйте движок Minimum (MB) (Минимум [Мб]) и затем щелкните опцию Dynamically Configure SQL Server Memory. Этот параметр начинает действовать сразу – без необходимости закрытия и повторного запуска SQL Server.
Параметр recovery interval
Вы можете использовать параметр recovery interval (интервал восстановления), чтобы определить максимальное количество минут, которое может потратить система для восстановления после аварии. SQL Server использует значение этого параметра и специальный встроенный алгоритм, определяя, насколько часто следует автоматически создавать контрольные точки, чтобы восстановление занимало только указанное количество минут. SQL Server определяет длительность интервала между контрольными точками в соответствии с объемом работы, выполняемой в системе. Если выполняется много работы, то контрольные точки создаются чаще, чем при небольшом объеме работы. Чем меньше объем выполняемой работы, тем меньше времени требуется SQL Server для восстановления после аварии. И чем больше заданный интервал восстановления, тем больше будет интервал между контрольными точками.
Увеличение интервала восстановления повышает производительность системы за счет снижения количества контрольных точек. (При создании контрольной точки выполняется большое число операций записи на диск, что может несколько замедлять выполнение транзакций пользователей.) Но при этом также увеличивается количество времени, которое SQL Server потратит на восстановление. Значение по умолчанию равно 0, указывая на то, что этот интервал будет определять для вас SQL Server и время восстановления будет составлять примерно 1 минуту. Увеличивайте параметр recovery interval на свое усмотрение. Значение от 5 до 15 (минут) находится в обычных пределах, но ваш выбор зависит только от вашего согласия, чтобы пользователи ждали от 5 до 15 минут для восстановления базы данных в случае аварии системы. Обычно значение параметра recovery interval требуется увеличить, чтобы снизить частоту создания контрольных точек, предоставляя пользователям возможность более свободного выполнения операций ввода-вывода для их транзакций без прерывания.
Параметр recovery interval входит в группу дополнительных параметров: для его конфигурирования с помощью sp_configure вы должны задать значение 1 для параметра show advanced options. Вы можете задать этот параметр с помощью Enterprise Manager, щелкнув на вкладке Database Settings (Параметры базы данных) окна SQL Server Properties и задав нужное значение в поле-счетчике Recovery Interval (min). Изменение этого параметра начинает действовать сразу – без необходимости закрытия и повторного запуска SQL Server.
Заключение
В этой лекции вы узнали о некоторых проблемах производительности, с которыми можете столкнуться как DBA. Вы узнали, как использовать System Monitor и Enterprise Manager для мониторинга системы и выявления узких мест, влияющих на производительность. Вы также узнали, как обнаруживать и разрешать наиболее распространенные проблемы производительности системы.
Этот курс провел вас через все «как, что и почему» в администрировании SQL Server 2000. Теперь вы сможете эффективно управлять своей системой и конфигурировать ее, а также легко и эффективно выполнять задачи повседневного администрирования. Авторы надеются, что вы с удовольствием прочитали этот курс.
From http://www.sql-server-performance.com:
SQL Server 7.0 and 2000, by default, run in what is called «thread mode.» What this means is that SQL Server uses what are called UMS (User Mode Schedulers) threads to run user processes. SQL Server will create one UMS thread per processor, with each one taking turns running the many user processes found on a busy SQL Server. For optimum efficiency, the UMS attempts to balance the number of user processes run by each thread, which in effect tries to evenly balance all of the user processes over all the CPUs in the server.
SQL Server also has an optional mode it can run in, called fiber mode. In this case, SQL Server uses one thread per processor (like thread mode), but the difference is that multiple fibers are run within each thread. Fibers are used to assume the identity of the thread they are executing and are non-preemptive to other SQL Server threads running on the server. Think of a fiber as a «lightweight thread,» which, under certain circumstances, takes less overhead than standard UMS threads to manage. Fiber mode is turned on and off using the «lightweight pooling» SQL Server configuration option. The default value is «0», which means that fiber mode is turned off.
So what does all this mean? Like everything, there are pros and cons to running in one mode over another. Generally speaking, fiber mode may» be beneficial when all of the following circumstances exist:
- Eight or CPUs are found on the server (the more the CPUs, the larger the benefit).
- All of the CPUS are running near maximum (95-100%) most of the time.
- There is a lot of context switching occurring on the server (as reported by the Performance Monitor System Object: Context Switches/sec. Generally speaking, more than 20,000 context switches per second is considered high.
- The server is making little or no use of distributed queries or extended stored procedures.
If all the above are true, then turning on «lightweight pooling,» option in SQL Server may see a small boost in performance.
But if the four circumstances are all not true, then turning on «lightweight pooling» could actually degrade performance. For example, if your server makes use of many distributed queries or extended stored procedures, then turning on «lightweight pooling» will definitely cause a problem because they cannot make use of fibers, which means that SQL Server will have to switch back-and-forth from fiber mode to thread mode as needed, which hurts SQL Server’s performance.
You will also want to carefully test (before and after) the affect of this setting on your server’s performance. While in test scenarios, some DBAs have noticed a boost in performance, in the real world, the benefit is much harder to quantify and identify.
Generally speaking, this option should only be tried in cases where you have tried every other option to boost performance, and there are no more to try.
This option is available under the SQL Server’s «Properties», «Processor» tab, in addition to using sp_configure. [7.0, 2000] Updated 8-17-2003
K. Brian Kelley
@kbriankelley
SQL Server Properties (Processor Tab)
Use this tab to view or specify the following options.
Options
Processor
Specify the processor you want the instance of Microsoft® SQL Server™ to use.
Maximum worker threads
Specify the maximum number of worker threads available to SQL Server processes.
Boost SQL Server priority on Windows
Specify whether an instance of SQL Server can run at a higher priority than other processes on the same computer. The default is 0, which is a priority base of 7. If you set this option to 1, SQL Server runs at a priority base of 13 in the Microsoft Windows NT® 4.0 or Windows® 2000 scheduler. It is recommended that you change the default only on Windows NT 4.0 or Windows 2000 systems dedicated to SQL Server.
Use Windows NT fibers
Specify that you want an instance of SQL Server to use fibers instead of threads. When using fibers, SQL Server allocates one thread per CPU and then allocates one fiber per concurrent user, up to the max worker threads value. This setting takes effect after you restart the server.
Use all available processors
Specify that you want SQL Server to use all available processors for the parallel execution of queries.
Use processors
Specify the number of processors you want SQL Server to use for the parallel execution of queries.
Minimum query plan threshold for considering queries for parallel execution
Specify the threshold at which SQL Server creates and executes parallel plans. SQL Server creates and executes a parallel plan for a query only when the estimated cost to execute a serial plan for the same query is higher than the value set for this option.
View or change the configured values for the options on this tab. If you change these values, click Running values to see whether the changes have taken effect. If they have not, you must restart the instance of SQL Server for the changes to be implemented.
Running values
View the current running values for the options on this tab. These values are read-only.
See Also
Setting Configuration Options