Pages

Kamis, 07 Agustus 2014

Storage, Interconnectivity, or Demand Response

A large number of interconnected, intermittent generation sources operating over a large spatial scale may effectively smooth out the variability between individual generation sources. However, variation will in output will still occur in the short and longer term.
Coupling intermittent renewable sources to a number of electricity production and storage sources could be used to meet the energy demand of a given facility or community, known as a hybrid power system. The power sources used depend on the local geographical and temporal constraints, and can be used to meet demand from remote applications such as communication stations, military installations and rural villages. Full renewable power hybrid systems are in operation and have been mainly applied to remote hybrid systems in China. One of the most cost effective hybrid systems for a microgrid, a small-scale grid, is a photovoltaic array and a micro hydro turbine.
Therefore, more or less electricity is generated than meets demand. Excess electricity can be exported, dumped, stored as another form of energy and/or other electricity sources feeding into the grid can be modified accordingly. An electricity deficit can be met by electricity imports, ramping up or turning on of other electricity generating sources (backup power) and using stored energy. Another option is to use demand management to balance supply and demand imbalances.
Storage is one of the more expensive options to balance supply and demand, but it is increasingly attractive to meet high renewable energy penetration targets.The potential for exporting and importing electricity depends on the grid infrastructure, interconnections with other grids and the ability for the importers to €absorb' surplus electricity generated and €exporters' to meet any shortfalls in the importer's electricity demand. For example, excess electricity generated from wind turbines in Denmark is exported to Norway, Sweden and Germany through grid interconnections.
In Norway and Sweden, the imported electricity is absorbed by reducing output from the country's hydro power plants or by using the electricity to pump water to higher elevations in a pumped storage plant. Electricity is also exported from Denmark to Germany. However, with the expansion of wind power in Germany, it is unlikely that electricity will continue to be imported and exported in roughly equal quantities between the two countries.
Demand response involves cutting off electricity supply to customers or starting onsite generation at critical times or when market prices are high. This is tied into the use of smart meters and the development of a smart grid.
There are fewer or smaller obstacles to the deployment of energy storage technologies than those for demand response technologies, as the latter require behavioural change.

Sabtu, 23 November 2013

Accounting and Payroll Software - Industry Jargon Defined

Just as your business has its own set of jargon or industry-specific terminology, so does the software industry! If you are searching for accounting or payroll software, the likelihood of hearing these terms is fairly high. Be prepared to speak with software representatives by understanding these key terms, and you will have a better chance of your needs being understood and met.

Application: This term is used to refer to a software program, as in: That application works well for processing invoices.

Compatible: Where software is concerned, compatible refers to whether applications can work well and exchange information together. Is this new payroll system compatible with the time clock we are already using? This can also refer to whether this software can run on a particular computer.

Customizable: There are two references of "customizable" in the software world. The first is the ability to alter the settings of a program to meet your specific needs, such as adding or omitting fields of information or creating and saving your own templates for later use. The second use of this term refers to open source code products. When customizing an open source product, you can actually change the software code within the program, potentially changing its functionality permanently. I like our new software because the invoice designs are customizable.

Dashboard: Just as your car's dashboard shows you information about operating your vehicle, a software dashboard displays your most important menu options and tools available for operating your software system. This is typically the screen you see first when opening your program. The dashboard within this system makes it really easy to do my job.

Demo: Of course this is a shortened version of the word demonstration. A demo usually provides an opportunity to view a software package's functionality, whether in video format, guided online or live tour, or even a trial version of the software. The demo really helped us gain an understanding of what it's like to use that program.

Driver: A software program that, when installed, helps your computer understand how to use a hardware device. Once we installed the driver, we were able to use the new mouse right away.

Feature: Options or tools for functionality provided within a software program. Our new software program has more features than our prior program, allowing us to enter and pull out information in a way that fits our company better.

Interface: An interface refers to the direct communication between two software products. Many accounting software applications have an interface to payroll software applications, allowing you to post data with a few simple clicks. Interface can also refer to the way in which a software application is presented to the user as in: The user interface for that program makes it easy to navigate and use.

Intuitive: This refers to how easy it is to operate a system without training. The system was so intuitive that I felt at ease using it after only a short time.

Legacy Products: Just as our ancestors have built a legacy, so have the age-old software products that have stood the test of time. In the software world, legacy products are those that have become outdated, yet may or may not still be supported. Though newer software is now available, he chose to stay with his legacy software program.

Migration: While you may associate this term with birds flying south, in the software industry it refers to the transfer of data from one application to another. A software company can often migrate your data from an older application to a newer one.

Module: This refers to each software element that performs a distinct function, usually each of which can stand on their own without depending on other elements. The software company just added a ratios module which greatly enhances a company's ability to see where improvements are needed.

Network: A group of computers that can interact with one another. All of the users of our software can enter information into the same database because they are set up as a network.

Operating System: An operating system is the software within a computer that makes it run. The major providers of operating systems are Microsoft (for PCs) and Apple (for Macs). I just got a new computer which came with the industry's latest operating system.

Robust: If you think of coffee when you hear this word, you are not alone. Robust in the software world refers to a software package's features being in-depth and complete. That system is robust and can surely handle our complex needs.

Support: This one may seem obvious. Most software companies offer support plans to go along with their software products. These support plans typically include assistance and problem solving for users of the software. Support can be conducted via telephone, e-mail, the internet, via help documents and videos, and more, depending on the company. What kind of support plans does this software company offer for their customers?

User Seats: No, this is not the chair you sit in while you use your computer. A user seat with reference to software denotes an independent user of the software system. Each user seat provides the capability for one person to be using the system simultaneously along with others. Therefore if you have three user seats, three people can be in the same program working at the same time. You will often see the word "concurrent" in front of this term. Two people will need to be entering payroll data at the same time, so we'll need two user seats.

Updates: An update is a new release of the software that can fix problems or enhance a software program. The software company recommends all users implement the latest update to their software, to ensure smooth ongoing operation within their program.

Version: Software companies often provide updates and improvements to their programs in Version schemes, represented by numbers or letters which demonstrates the importance of what is being released. I need to download the latest version of my software because it includes crucial elements which can really help my business.

Getting to know these software terms will put you on the road to a better understanding during your software search.

For more useful information about Accounting and Payroll Software, please follow the below link:

Accounting Software

Business Database Software - For Earning Great Revenues

Business database software solutions help both small and large business organizations to reduce their expenses and make their business productive. Such type of database requires efficient handling. In the modern world of technological advancement, database software for your business is indispensable as it helps in earning great revenues. Business specific software is provided by highly skilled software professionals and consultants. Such software has become essential for successful running of all types of business organization, be it large or small. Some of the popular type of business database includes healthcare/ medical database software, human resource database software, accounts database software, logistic and transportation database software etc. A business organization is divided into different departments and a planned strategy is required for their successful operation. The officials should be well informed about the work details of the different departments and this is where a database is required. Such software can even be run by professionals with limited computer knowledge. It also eliminates the need to spend a big part of your profit on extra men and labor. It also enables the entrepreneurs to deliver their products and services at a very short time.

Small business database software helps small business organizations to meet their requirements within the stipulated budget. Such software may not be as powerful as the large ones, but it has enough tools to meet your specific functions. Customized database solutions are also available that help small business organizations to easily manage and handle large amount of daily data. With the help of features like addition, deletion, modification etc. you can calculate large chunks of daily data. Regular maintenance and optimization of data is very essential for effective data navigation. If you optimize databases into logical sequences, it becomes easily accessible. A conceptual plan must be taken for efficient management of a database.

With the rise in competition, it has become essential for any type of business to maintain an online presence. As a result, a large amount of website database is generated which must be handled by professionals. You must also give prime importance to database security as your database will be in public domain.

Membership Software For Setting Up An Effective Site

To statesman with, body software is a way utilized to win body to a peculiar website. It could also proscribe attain to circumstantial parts of the website for those who bang mercenary a body fee or score subscribed up for one.
Basically, you instrument be fit to attain emancipated membership software as advisable as wide germ applications which could be victimized to create a slew of membership sites.
Civic is a consumer relationship direction software ability that is intentional for the use of non-governmental and nonprofit groups. It is created to enable users to command a titanic quantity of message about its activities, volunteers, donors as surface as vendors, clients or employees. Essentially, Civic could be utilized along with Joomla and Drupal. A few of the organizations which use Civic countenance Mercifulness Planetary and Wiki media Undergarment.
Other membership software alternative is Drupal. It is an coarse maker and release substance direction group created in PHP. Mainly, it is used as a endorse end group for as untold as 1% of all the experience's websites. Its stock release is called Drupal Nucleus and possesses features much as reason mending, account readjustment, card management, and scheme management. Do note that spell Drupal provides a multi factorial program, no skills in planning are requisite for the elementary installing of a website or the administration source direction freed software victimized to produce gnosis on intra nets and the web. It is created in PHP and its information is stored in MySQL. Among its features are RSS feeds, printable versions of web pages, and page caching.
Anticipate it or not, WordPress also has body plugins open. It is ideal to be utilized for body sites which supply predominant acceptance which do not condition to be placed in a precise way. One fortunate way to persuade WordPress to a body position is via Member - an international script that integrates with fourfold scripts.
Essentially, Member could be set up to portion a person to gesture up to be a VIP member, gain the place, the improve desk and VIP installation all piece utilizing the corresponding countersign and individual itemize minus the penury to record myriad times. Regrettably, Member is not able to protect your website gnosis as it can exclusive add or remove members from your database in WordPress.
It is often easier to create a membership place using the Wish list Member plugin. All one needs to do is upload the plugin, alter it and write in your Wish list Member clear and voila! You can now start your real own body place. All in all, the superfine membership site is one that suits your needs, requirements, and unequaled specifications.
One benefit of web membership software that is paid monthly is that you get the benefits of any updates. And you might also find new products being added on a regular basis. This keeps the products aspect of the site fresh, and you also get enhancements and improvements as they become available. Support also tends to be very fast and top class, because no business wants to upset regular subscribers - you will be the same with your own members.
Choosing web membership software might not seem easy if member sites are new to you, but if you keep the above advice in mind then you should be able to make the right choice. You generally get what you pay for, and if all you want is a very basic membership site then you needn't pay much - no more than about $57 for the whole software package.

Selasa, 12 November 2013

Top 5 Cloud Testing and Performance Monitoring Tools

Cloud computing is still an evolving paradigm. Its definitions, use cases, underlying Technologies, issues, risks, and benefits will be refined in a spirited debate by the public and private sectors. These attributes,and characteristics will evolve and change over time.
Various cloud based technologies and tools are available in the market facilitating the different facets of IT development. The rapid pace of advancement has also made way for tools catering to varied aspects of testing involving both performance and load management. The benefits of integrating the cloud testing based tools are many like flexibility of use and cost reduction (usage charges, licensing infrastructure). It also helps you choose the right kind of tool required for the job and start working immediately.
Here is a top 5 companies and the cloud based testing tools and solutions released by them, which help in cloud performance monitoring and testing:
  1. SOASTA: The CloudTest from SOASTA leverages the cloud resources for facilitating performance monitoring and load testing. Additionally, it also replicates traffic that hits an application or a website from inside or outside the firewall.

  2. Keynote: is the global leader in cloud testing & monitoring cloud application, cloud testing service provider, Test Perspective of Keynote provides comprehensive solutions geared towards the enhancement of online experience. It helps companies analyze the performance of their websites, applications, and content on a diverse set of browsers, mobile devices, and networks. The exclusive business model of Keynote allows you to improve productivity while, controlling costs with the reliable and striking performance of its on-demand measurement and test services and products.

  3. BrowserMob: The monitoring service of this particular provider makes use of real web browsers to replicate the interaction of a user with your website. Irrespective of being equally priced to the monitoring service style of simplistic ping that only goes through individual URLs, this takes a step ahead in the service approach. The usage of real browsers enables you to have a check on the response of the individual objects alongside verifying the functionality of your website in its entirety. This particular approach also involves ensuring that third-party components like gadgets, content delivery networks, advertisement, and analytics does not affect your website negatively.

  4. GFI: The MAX RemoteManagement of GFI enables easy monitoring of different aspects of your clients like remote offices, bandwidth usage, servers, ISP connection, raid arrays, and the website. In simple words, this particular service allows monitoring the principle parts of the infrastructure of your network and takes care of the clients proactively maintaining a minimum cost of the hardware avoiding costly downtime.

  5. CloudHarmony: This particular testing solution is still in beta. However, you may make use of the continuously updated extensive list of benchmarks for viewing and comparing the performance metrics from different cloud services and providers.
The above-mentioned cloud monitoring solutions and cloud testing services allow a better analysis of the IT infrastructure maintaining a smooth and swift approach.
Kevin is the Senior Editor, whose expertise spans in Cloud, Mobile and Web privacy.

Minggu, 10 November 2013

SQL Server 2014 In-Memory OLTP: Nonclustered Indexes for Memory-Optimized Tables

SQL Server 2014 CTP1 introduced hash indexes for memory-optimized tables. Hash indexes are very efficient for point lookups, when you know exactly the value you are looking for. However, they do not perform well if you need a range of value, for example a date range, or if you need to retrieve the rows in a particular order.

Memory-optimized nonclustered indexes are a new index type for memory-optimized tables in CTP2. Nonclustered indexes support retrieving ranges of values, and also support retrieving the table rows in the order that was specified when the index was created. They can be used to optimize the performance of queries on memory-optimized tables that use inequality predicates like ‘<’ and ‘>’, and queries using an ORDER BY clause.

Nonclustered indexes also support point lookups, but hash indexes still offer far better performance. You should continue to use hash indexes to optimize the performance of queries with equality predicates.

Hash Index Limitations

Consider, for example, the following (simplified) CREATE TABLE statement. The table SalesOrderHeader_inmem has a hash index on the primary key column ‘SalesOrderID’, as well as a hash index on the column ‘OrderDate’. The index definitions are bold-faced. Note that the BUCKET_COUNT should typically be set between one and two times the number of unique index key values.

CREATE TABLE [Sales].[SalesOrderHeader_inmem](
 [SalesOrderID] uniqueidentifier NOT NULL 
 PRIMARY KEY 
 NONCLUSTERED HASH WITH (BUCKET_COUNT=1000000) 
 DEFAULT (NEWID()),
 [RevisionNumber] [tinyint] NOT NULL CONSTRAINT 
[IMDF_SalesOrderHeader_RevisionNumber] DEFAULT ((0)),
 [OrderDate] [datetime2] NOT NULL
 INDEX ix_OrderDate HASH WITH (BUCKET_COUNT=1000000)
 ) WITH (MEMORY_OPTIMIZED=ON)

If you run a query of the form:

SELECT * FROM Sales.SalesOrderHeader_inmem WHERE SalesOrderID = @ID

SQL Server will use the hash index on the column SalesOrderID to quickly identify the row corresponding to the parameter @ID. Witness the Index Seek operation in the query plan:

Hash indexes are very efficient for point lookup operations, because they require only a simple lookup in a hash table rather than traversing an index tree structure, as is required for traditional (non)clustered indexes. If you are looking for the rows corresponding to a particular index key value, using a hash index is the way to go.

Now, hash indexes do have some limitations. Because of the nature of hash tables, rows appear in the index in random order. This means it is not possible to retrieve ranges of values, or to scan rows in any particular order. Therefore, hash indexes do not support Index Seek operations on inequality predicates, and do not support ordered scans. The former results in a full index scan, and the latter results in a scan followed by a(n expensive) sort operator. All this results in a potential performance degradation when using such queries with hash indexes.

Consider the following two example queries:

Query with an inequality predicate

SELECT * FROM Sales.SalesOrderHeader_inmem 
 WHERE OrderDate > @Date

The plan for this query does not use the index on OrderDate; it simply includes full index scan for the primary index. This means that SQL Server will process all the rows in the table, and only later filter out the ones with OrderDate > @Date.

Query with an ORDER BY

SELECT * FROM Sales.SalesOrderHeader_inmem 
 ORDER BY OrderDate

The plan for this query includes a sort operator, which is very costly: after scanning the rows, all rows will need to be ordered to obtain the desired sort-order.

Nonclustered indexes

The new memory-optimized nonclustered indexes support both Index Seek operations using inequality predicates, and ordered scans. Consider the following amended CREATE TABLE statement, which now includes a nonclustered index on the column OrderDate.

‘SalesOrderID’, as well as a hash index on the column ‘OrderDate’. The index definitions are bold-faced.

CREATE TABLE [Sales].[SalesOrderHeader_inmem](
 [SalesOrderID] uniqueidentifier NOT NULL 
 PRIMARY KEY 
 NONCLUSTERED HASH WITH (BUCKET_COUNT=1000000) 
 DEFAULT (NEWID()),
 [RevisionNumber] [tinyint] NOT NULL CONSTRAINT 
[IMDF_SalesOrderHeader_RevisionNumber] DEFAULT ((0)),
 [OrderDate] [datetime2] NOT NULL
 INDEX ix_OrderDate NONCLUSTERED
 ) WITH (MEMORY_OPTIMIZED=ON)

Note that the keyword NONCLUSTERED is optional in this example. Also note that the syntax for memory-optimized nonclustered indexes is similar to the traditional disk-based nonclustered indexes. The only difference is that with memory-optimized indexes you need to specify the index with the CREATE TABLE statement, while with traditional indexes, you can create the index after creating the table.

Consider now the following two queries:

Query with an inequality predicate

SELECT * FROM Sales.SalesOrderHeader_inmem 
 WHERE OrderDate > @Date

The plan for this query now uses the index on OrderDate. And when inspecting the properties of the Index Seek operator, you will see the inequality predicate OrderDate > @Date. This means that SQL Server will only need to process the rows with OrderDate > @Date.

SELECT * FROM Sales.SalesOrderHeader_inmem 
 ORDER BY OrderDate

The plan for this query does not include a sort operator. SQL Server will scan the rows in the index in order; in this case the sort-order of the index is the same as the sort-order required by the query, thus no additional sort operator is needed.

Note that, in contrast to disk-based nonclustered indexes, memory-optimized nonclustered indexes are uni-directional. This means that they support index scans only in the order that was specified when the index was created. If the ORDER BY clause in the above example would require OrderDate in DESC order, the index ix_OrderDate could not be used.

Limitations on memory-optimized indexes

Memory-optimized indexes do have a few limitations in SQL Server 2014 that we hope to address in future versions. You do need to consider these limitations when deciding on an indexing strategy for your memory-optimized tables.

At most 8 indexes – you cannot specify more than 8 indexes on a single memory-optimized table.
BIN2 collations – when using n(var)char columns in an index key, the columns must have a _BIN2 collation. Using BIN2 allows very fast lookup, as this can be based simply on binary comparison. However, you need to consider the implications of using a BIN2 collation, such as case and accent sensitivity. For more details see the Books Online topic on Collations and Code Pages.
NOT NULL columns in the index key – memory-optimized indexes do not support nullable columns; all columns in the index key must be declared as NOT NULL.'

Guidelines for choosing indexes

A few simple guidelines to help choose the type of index you need for your application:

If you need to perform only point lookups, meaning you need to retrieve only the rows corresponding to a single index key value, use a hash index.
If you need to retrieve ranges of rows, or need to retrieve the rows in a particular sort-order, use a nonclustered index.
If you need to do both, particularly if point lookups are frequent, you can consider creating two indexes: it is possible to create both a hash and a nonclustered index with the same index key.
Hash indexes require an estimate of the number of unique index key values, to determine an appropriate value for the BUCKET_COUNT – typically between 1X and 2X. Because nonclustered indexes do not require setting the BUCKET_COUNT, it can be tempting to simply use a nonclustered index instead of a hash index. However, this could lead to sub-optimal performance for point lookup operations. In many scenarios where point lookup performance is critical and there is no good estimate for the number of unique index key values, it is better to over-provision the BUCKET_COUNT: i.e., pick a very high bucket count that you know is going to be larger than the number of index keys. Note that over-provisioning does not affect the performance of point lookups, but under-provisioning does. However, over-provisioning does increase memory-consumption and it slows down full index scans.




Sabtu, 09 November 2013

IO Resource Governance in SQL Server 2014

Resource Governor was introduced in SQL Server 2008 to achieve predictable performance in a multi-tenant environment, to support mixed workload patterns, to provide mechanisms and tools to deal with runaway queries, and to enforce resource limits for CPU and memory. It enables customers to implement database consolidation or to configure their own database as a service. Since then, we’ve been incrementally enhancing this feature in major releases to address the top customer requests in this area. In SQL Server 2014, we are excited to add support for IO resource governance.

What is new?

Resource Pools now support configuration of minimum and maximum IOPS per volume in addition to CPU/Memory settings enabling more comprehensive resource isolation controls. See syntax details for Create and Alter resource pool with IO support.

Ability to configure the maximum outstanding IO per volume (at instance scope). This knob is meant to calibrate the resource governor feature for your storage subsystem.

As a note of clarification, by volume we refer to the disk volume as identified by Windows File system APIs
We’ve added new columns in the sys.dm_resource_governor_resource_pools and sys.dm_resource_governor_configuration dynamic management views to surface the IO usage and configuration. In addition, we’ve also added a new DMV called sys.dm_resource_governor_resource_pool_volumes that captures IO usage stats across different volumes used by the instance.

Two new XEvents (file_write_enqueued, file_read_enqueued) were added to monitor IO requests to the IO Resource Manager queues. These XEvents follow the conventions of the existing IO related events, such as issuing IO and IO completion
Last but not least, we’ve added relevant performance counters such as Disk Read IO/sec, Disk Read Bytes/sec, Avg Disk Read IO (ms), Disk Write IO/sec, Disk Write Bytes/sec, Avg Disk Write IO (ms), Disk Read IO Throttled/sec, Disk Write IO Throttled/sec to the SQLServer:Resource Pool Stats.
How to use it?

Let’s take the following scenario as an example of how IO Resource Governance can be used to control the resource usage in a SQL Server instance:

Let’s suppose we are a Database hoster or running a Private cloud for database consolidation and we need to host multiple databases from different tenants (or customers) within a single SQL Server instance to achieve better density and COGS. If one of the tenants is running a very IO intensive workload, this can saturate the IO subsystem, causing performance problems to concurrent workloads that need to perform IO.

The first step would be to create a Resource Pool for each tenant/database and a classifier function that will map the sessions from each tenant to the corresponding Resource Pool. For example, sessions for Customer 1 can be mapped to Resource Pool 1 and sessions for Customer 2 to Resource Pool 2.

If you want to use IO Resource Governance, it is important to set the min or max IOPS setting for every Resource Pool so that the IO requests are redirected to the governance subsystem and minimum reservations can be honored. In the example below, we set the MAX_IOPS_PER_VOLUME to the maximum value for every Pool:

-- Create 2 resource pools & 2 workload groups.
 CREATE RESOURCE POOL Customer1Pool;
 CREATE RESOURCE POOL Customer2Pool;
 GO

 CREATE WORKLOAD GROUP Customer1Group USING Customer1Pool;
 CREATE WORKLOAD GROUP Customer2Group USING Customer2Pool;
 GO

 -- Create classifier function
 CREATE FUNCTION fnUserClassifier()
 RETURNS SYSNAME
 WITH SCHEMABINDING
 AS
 BEGIN
 IF ORIGINAL_DB_NAME() = 'Customer1DB'
 BEGIN
 RETURN 'Customer1Group'
 END

 IF ORIGINAL_DB_NAME() = 'Customer2DB'
 BEGIN
 RETURN 'Customer2Group'
 END

 RETURN 'default'
 END;
 GO

 -- Set the classifier function and enable RG.
 ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.fnUserClassifier);
 ALTER RESOURCE GOVERNOR RECONFIGURE;
 GO

 -- Set default values for the resource pools so that IO RG is enabled.
 ALTER RESOURCE POOL Customer1Pool WITH (MIN_IOPS_PER_VOLUME=0, MAX_IOPS_PER_VOLUME=2147483647);
 ALTER RESOURCE POOL Customer2Pool WITH (MIN_IOPS_PER_VOLUME=0, MAX_IOPS_PER_VOLUME=2147483647);
 ALTER RESOURCE GOVERNOR RECONFIGURE;

Classifying each workload to a different Resource Pool allows us to configure the resource limits we want to provide for each tenant and also monitor the resource usage generated by their workload. The graph below (Performance Monitor) shows that the workload from Customer 1 is issuing too many IO requests causing a performance drop for Customer 2:

In order to protect Customer 2 and guarantee that he gets consistent performance, regardless of the activity from other tenants, we can set the MIN_IOPS_PER_VOLUME setting for the corresponding Resource Pool. From the graph above, it seems that the system can handle around 1300 IOPS, so we decide to reserve 650 IOPS for Customer 2:

ALTER RESOURCE POOL Customer2Pool WITH (MIN_IOPS_PER_VOLUME=650);
 ALTER RESOURCE GOVERNOR RECONFIGURE;
 GO


With this configuration, SQL Server will try to throttle the workloads that are running in other Resource Pools, in order to satisfy the 650 IOPS reservation for Customer 2. In the graph below, we can see that the IOPS of the system are now fairly distributed among the tenants and that the performance for Customer 2 is back to normal despite its noisy neighbor:

The MIN_IOPS_PER_VOLUME setting will make a reservation for the Resource Pool, but it won’t set any limit for the maximum IOPS it can use. This means that the tenants will still get performance variation depending on how active the rest of the tenants on the instance are. To avoid this problem and guarantee predictable performance, we can set the MAX_IOPS_PER_VOLUME setting for each of the tenants. This will set a hard limit for the maximum IOPS the tenant’s workload can use, guaranteeing predicable performance for the tenant, but also protecting the rest of the tenants on the instance:

ALTER RESOURCE POOL Customer2Pool WITH (MAX_IOPS_PER_VOLUME=750)
 ALTER RESOURCE GOVERNOR RECONFIGURE
 GO

By configuring the IO settings on the Resource Pools we can control the resources we want to provide for each tenant. This allows us to guarantee predictable performance regardless of the activity from other tenants or even provide differentiation in SLA for the Database Service based on the amount of the resources customers sign up to reserve.

Another scenario that many of you might find applicable is isolating your OLTP workload from any maintenance operations that need to run in the database. Rebuilding an index, for example, is a common operation that can trigger a large number of IO requests, as it needs to scan the whole index or table. By using IO Resource Governance we can limit the number of IO operations these tasks can perform and guarantee predictable performance for concurrent OLTP workload.

In this case, we need a Resource Pool dedicated for maintenance operations and a classifier function that will map maintenance sessions to the corresponding Resource Pool. Running these operation as a different user might be a good way to distinguish between regular and maintenance sessions. By configuring the MAX_IOPS_PER_VOLUME setting on the “maintenance” Resource Pool, we can limit the number of IO operations these tasks can perform and protect concurrent OLTP workload from being impacted.


I hope the example scenarios above demonstrate the core value of this feature.