Ö´Ðлº´æÒÔÓÅ»¯SQL ServerµÄÄÚ´æÕ¼ÓÃ
×÷Õߣºsuperhasty
2007-11-29
ÔÚÂÛ̳Éϳ£¼ûÓÐÅóÓѱ§Ô¹£¬ËµSQL ServerÌ«³ÔÄÚ´æÁË¡£ÕâÀï±ÊÕ߸ù¾Ý¾Ñé¼òµ¥½éÉÜÒ»ÏÂÄÚ´æÏà¹ØµÄµ÷ÓÅ֪ʶ¡£Ê×ÏÈ˵Ã÷Ò»ÏÂSQL
ServerÄÚ´æÕ¼ÓÃÓÉÄ¿·Ö×é³É¡£SQL ServerÕ¼ÓõÄÄÚ´æÖ÷ÒªÓÉÈý²¿·Ö×é³É£ºÊý¾Ý»º´æ(Data
Buffer)¡¢Ö´Ðлº´æ(Procedure Cache)¡¢ÒÔ¼°SQL ServerÒýÇæ³ÌÐò¡£SQL
ServerÒýÇæ³ÌÐòËùÕ¼Óûº´æÒ»°ãÏà¶Ô±ä»¯²»´ó£¬ÔòÎÒÃǽøÐÐÄÚ´æµ÷ÓŵÄÖ÷Òª×ÅÑÛµãÔÚÊý¾Ý»º´æºÍÖ´Ðлº´æµÄ¿ØÖÆÉÏ¡£±¾ÎÄÖ÷Òª½éÉÜÒ»ÏÂÖ´Ðлº´æµÄµ÷ÓÅ¡£Êý¾Ý
»º´æµÄµ÷ÓŽ«ÔÚÁíÍâµÄÎÄÕÂÖнéÉÜ¡£
¶ÔÓÚ¼õÉÙÖ´Ðлº´æµÄÕ¼Óã¬Ö÷Òª¿ÉÒÔͨ¹ýʹÓòÎÊý»¯²éѯ¼õÉÙÄÚ´æÕ¼Óá£
1¡¢Ê¹ÓòÎÊý»¯²éѯ¼õÉÙÖ´Ðлº´æÕ¼ÓÃ
ÎÒÃÇͨ¹ýÈçÏÂÀý×ÓÀ´ËµÃ÷Ò»ÏÂʹÓòÎÊý»¯²éѯ¶Ô»º´æÕ¼ÓõÄÓ°Ï졣Ϊ·½±ãÊÔÑ飬ÎÒÃÇʹÓÃÁËһ̨ûÓÐÆäËü¸ºÔصÄSQL Server½øÐÐÈçÏÂʵÑé¡£
ÏÂÃæµÄ½Å±¾Ñ»·Ö´ÐÐÒ»¸ö¼òµ¥µÄ²éѯ£¬¹²Ö´ÐÐ10000´Î¡£
Ê×ÏÈ£¬ÎÒÃÇÇå¿ÕÒ»ÏÂSQL ServerÒѾռÓõĻº´æ£º
dbcc freeproccache
È»ºó£¬Ö´Ðнű¾£º
DECLARE
@t
datetime
SET
@t
=
getdate
()
SET
NOCOUNT
ON
DECLARE
@i
INT
,
@count
INT
,
@sql
nvarchar
(
4000
)
SET
@i
=
20000
WHILE
@i
<=
30000
BEGIN
SET
@sql
=
'
SELECT @count=count(*) from P_Order WHERE MobileNo =
'
+
cast
(
@i
as
varchar
(
10
) )
EXEC
sp_executesql
@sql
,N
'
@count INT OUTPUT
'
,
@count
OUTPUT
SET
@i
=
@i
+
1
END
PRINT
DATEDIFF
( second,
@t
,
current_timestamp
)
Êä³ö£º
DBCC Ö´ÐÐÍê±Ï¡£Èç¹û DBCC Êä³öÁË´íÎóÐÅÏ¢£¬ÇëÓëϵͳ¹ÜÀíÔ±ÁªÏµ¡£
11
ʹÓÃÁË11ÃëÍê³É10000´Î²éѯ¡£
ÎÒÃÇ¿´Ò»ÏÂSQL Server»º´æÖÐËùÕ¼ÓõIJéѯ¼Æ»®£º
Select
Count
(
*
) CNT,
sum
(size_in_bytes) TotalSize
from
sys.dm_exec_cached_plans
²éѯ½á¹û£º¹²ÓÐ2628ÌõÖ´Ðмƻ®»º´æÔÚSQL ServerÖС£ËüÃÇËùÕ¼ÓõĻº´æ´ïµ½£º
92172288×Ö½Ú = 90012KB = 87 MB¡£
 
Ïà¹ØÎĵµ£º
Ò» ϵͳԤ¶¨Òå´íÎó´úÂë
SQL Server ÓÐ3831¸öÔ¤¶¨Òå´íÎó´úÂ룬ÓÉmaster.dbo.sysmessages±íά»¤¡£Ã¿Ò»¸ö´íÎó´úÂë¶¼ÓÐÏàÓ¦µÄ¼¶±ðºÍÃèÊö¡£
´íÎó¶¨ÒåµÄ¼¶±ð´Ó0µ½25¡£20ÒÔÉϵĴíÎó´ú±íÖØ´ó´íÎó£¬Í¨³£ÒâζןôíÎó»áµ¼Ö´洢½ø³ÌÁ¢¿ÌÖÕÖ¹£¬²¢ÇÒËùÓеĿͻ§Á¬½Ó¶¼ÒªÖØÐ³õʼ»¯¡£
·Ç¹Ø¼üÐÔ´íÎóÖ»ÊǽûÖ¹µôµ±Ç°ÔËÐеijÌÐòÐУ¬²¢¼Ì ......
ʹÓà Microsoft SQL Server °²×°Ïòµ¼µÄ"ʵÀýÃû"Ò³£¬¿ÉÖ¸¶¨´´½¨Ä¬ÈÏʵÀý»¹ÊÇ´´½¨ SQL Server Express ÃüÃûʵÀý¡£³ý·ÇÄúÑ¡ÔñĬÈÏʵÀý£¬·ñÔò SQL Server Express ½«Ê¼ÖÕ°²×°ÃüÃûʵÀý (SQLExpress)¡£´ËÐÐΪÓë SQL Server 2005 ²»Í¬£¬ºóÕßÔÚδѡÔñÃüÃûʵÀýµÄÇé¿öÏ£¬½«Ê¼ÖÕ°²×°Ä¬ÈÏʵÀý¡£
Ñ¡Ïî
Ñ¡Ïî
˵Ã÷
ĬÈÏʵÀý ......
Ëø»úÖÆ
NOLOCKºÍREADPASTµÄÇø±ð¡£
1. ¿ªÆôÒ»¸öÊÂÎñÖ´ÐвåÈëÊý¾ÝµÄ²Ù×÷¡£
BEGIN TRAN t
INSERT INTO Customer
SELECT 'a','a'
2. Ö´ÐÐÒ»Ìõ²éѯÓï¾ä¡£
SELECT * from Customer WITH (NOLOCK)
½á¹ûÖÐÏÔʾ"a"ºÍ"a"¡£µ±1ÖÐÊÂÎñ»Ø¹öºó£¬ÄÇôa½«³ÉΪÔàÊý¾Ý¡£(×¢:1ÖеÄÊÂÎñδÌá½») ¡£NOLOCK±íÃ÷ûÓжÔÊý¾Ý±íÌí¼Ó¹²Ï ......
Ó¦ÓÃÖз¢ÏÖsqlÖеÄand¼°orµÄÖ´ÐÐЧÂÊÎÊÌâ
£ó£ñ£ìÓï¾ä£¬ÎªÊ²Ã´°Ñ×îºóµÄ£ï£ò»»³É£á£î£ä£¬²éѯµÄ¾ÍºÜ¿ì£¬Ê¹ÓõÄÊÇmssql·¶ÀýÖÐnorthwindÊý¾Ý¿âΪÀý£¬
select * from Orders a left join [Order Details] b on a.orderid = b.orderid
where a.customerid like '%ics%' or b.productid in (42,72)
×·×ÙÁËÓï¾äµÄÖ´Ðз½°¸,·¢ÏÖ ......