Test the effect of SQL Server table variables on IO and memory

Source: Internet
Author: User

1. test the effect of table variable creation on I/O

Test the space size of tempdb before and after table variables are created. Currently, the size is calculated using sp_spaceused. You can also use view sys. dm_db_file_space_usage.

 

14use tempdb

Go

Set nocount on

Exec sp_spaceused/* Before data insertion */

Declare @ tmp_orders table (list_no int, id int)

Insert into @ tmp_orders (list_no, id)

Select ROW_NUMBER () over (order by Id) list_no, id

From Test. dbo. Orders

Select top (1) name, object_id, type, create_date

From sys. objects

Where type = 'U' Order by create_date Desc

Exec sp_spaceused/* after data is inserted */

Go

Exec sp_spaceused/* after Go */

The execution result is as follows:

You can see:

1) when the table variable is created and the batch processing statement is not completed, the space of the temporary database increases by nearly 9 MB. Space is released after the statement for creating table variables ends

2) You can query the created table variable object in the object table sys. objects of the temporary database.

Continue to verify whether I/O operations are performed. Use view sys. dm_io_virtual_file_stats.

Run the following statement before and after creating table variables:

Select db_name (database_id) database_name ,*

From sys. dm_io_virtual_file_stats (db_id ('tempdb'), NULL)

The test results are as follows:

1 * before creating table Variables

2 * after creating table Variables

We can see that the number of data file writes and the number of written bytes have changed significantly, and the number of written bytes is compared:

Select (2921709568-2913058816) * 1.0/1024/1024

It is about 8.3 M, which is basically the same as the table variable data. It can be seen that the I/O operation is indeed performed when the table variable is created.

2. test the effect of table variable creation on memory

Consider whether the table variables occupy the memory data buffer. The test SQL is as follows:

 

30 declare @ tmp_orders table (list_no int, id int)

Insert into @ tmp_orders (list_no, id)

Select ROW_NUMBER () over (order by Id) list_no, id

From Test. dbo. Orders

-- Query the last object created in the tempdb Database

Select top (1) name, object_id, type, create_date from sys. objects Where type = 'U' Order by create_date Desc

-- Query the number of cached pages in the memory

SELECT count (*) AS cached_pages_count

, Name, index_id

FROM sys. dm_ OS _buffer_descriptors AS bd

INNER JOIN

(

SELECT object_name (object_id) AS name

, Index_id, allocation_unit_id

FROM sys. allocation_units AS au

Inner join sys. partitions AS p

ON au. container_id = p. hobt_id

AND (au. type = 1 OR au. type = 3)

UNION ALL

SELECT object_name (object_id) AS name

, Index_id, allocation_unit_id

FROM sys. allocation_units AS au

Inner join sys. partitions AS p

ON au. container_id = p. partition_id

AND au. type = 2

) AS obj

ON bd. allocation_unit_id = obj. allocation_unit_id

WHERE database_id = db_id ()

Group by name, index_id

Order by cached_pages_count DESC

The test results are as follows:

After the table variables are created, the data page is also cached in the Buffer Pool. However, after the batchcompute statement is completed, the occupied space is released.

3. Conclusion

The table variables created by SQL Server in batch processing produce I/O operations, occupying tempdb space and bufferPool memory space. After the batch processing is completed, the occupied resources are cleared.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.