SQLËø±íÓï¾ä
×ֺţº ´ó´ó ÖÐÖРСС
Ëø¶¨Êý¾Ý¿âµÄÒ»¸ö±í
SELECT * from table WITH (HOLDLOCK)
×¢Òâ: Ëø¶¨Êý¾Ý¿âµÄÒ»¸ö±íµÄÇø±ð
SELECT * from table WITH (HOLDLOCK)
ÆäËûÊÂÎñ¿ÉÒÔ¶ÁÈ¡±í£¬µ«²»ÄܸüÐÂɾ³ý
SELECT * from table WITH (TABLOCKX)
ÆäËûÊÂÎñ²»ÄܶÁÈ¡±í,¸üкÍɾ³ý
SELECT Óï¾äÖГ¼ÓËøÑ¡ÏŦÄÜ˵Ã÷
SQL ServerÌṩÁËÇ¿´ó¶øÍ걸µÄËø»úÖÆÀ´°ïÖúʵÏÖÊý¾Ý¿âϵͳµÄ²¢·¢ÐԺ͸ßÐÔÄÜ¡£Óû§¼ÈÄÜʹÓÃSQL ServerµÄȱʡÉèÖÃÒ²¿ÉÒÔÔÚselect Óï¾äÖÐʹÓÓ¼ÓËøÑ¡Ïî”À´ÊµÏÖÔ¤ÆÚµÄЧ¹û¡£ ±¾ÎĽéÉÜÁËSELECTÓï¾äÖеĸ÷ÏÓËøÑ¡Ïî”ÒÔ¼°ÏàÓ¦µÄ¹¦ÄÜ˵Ã÷¡£
¹¦ÄÜ˵Ã÷£º¡¡
NOLOCK£¨²»¼ÓËø£©
´ËÑ¡ÏѡÖÐʱ£¬SQL Server ÔÚ¶ÁÈ¡»òÐÞ¸ÄÊý¾Ýʱ²»¼ÓÈκÎËø¡£ ÔÚÕâÖÖÇé¿öÏ£¬Óû§ÓпÉÄܶÁÈ¡µ½Î´Íê³ÉÊÂÎñ£¨Uncommited Transaction£©»ò»Ø¹ö(Roll Back)ÖеÄÊý¾Ý, ¼´ËùνµÄ“ÔàÊý¾Ý”¡£
HOLDLOCK£¨±£³ÖËø£©
´ËÑ¡ÏѡÖÐʱ£¬SQL Server »á½«´Ë¹²ÏíËø±£³ÖÖÁÕû¸öÊÂÎñ½áÊø£¬¶ø²»»áÔÚ;ÖÐÊÍ·Å¡£
UPDLOCK£¨ÐÞ¸ÄËø£©
´ËÑ¡ÏѡÖÐʱ£¬SQL Server ÔÚ¶ÁÈ¡Êý¾ÝʱʹÓÃÐÞ¸ÄËøÀ´´úÌæ¹²ÏíËø£¬²¢½«´ËËø±£³ÖÖÁÕû¸öÊÂÎñ»òÃüÁî½áÊø¡£Ê¹ÓôËÑ¡ÏîÄܹ»±£Ö¤¶à¸ö½ø³ÌÄÜͬʱ¶ÁÈ¡Êý¾Ýµ«Ö»Óиýø³ÌÄÜÐÞ¸ÄÊý¾Ý¡£
TABLOCK£¨±íËø£©
´ËÑ¡ÏѡÖÐʱ£¬SQL Server ½«ÔÚÕû¸ö±íÉÏÖù²ÏíËøÖ±ÖÁ¸ÃÃüÁî½áÊø¡£ Õâ¸öÑ¡Ïî±£Ö¤ÆäËû½ø³ÌÖ»ÄܶÁÈ¡¶ø²»ÄÜÐÞ¸ÄÊý¾Ý¡£
PAGLOCK£¨Ò³Ëø£©
´ËÑ¡ÏîΪĬÈÏÑ¡Ï µ±±»Ñ¡ÖÐʱ£¬SQL Server ʹÓù²ÏíÒ³Ëø¡£
TABLOCKX£¨ÅÅËü±íËø£©
´ËÑ¡ÏѡÖÐʱ£¬SQL Server ½«ÔÚÕû¸ö±íÉÏÖÃÅÅËüËøÖ±ÖÁ¸ÃÃüÁî»òÊÂÎñ½áÊø¡£Õ⽫·ÀÖ¹ÆäËû½ø³Ì¶ÁÈ¡»òÐ޸ıíÖеÄÊý¾Ý¡£
HOLDLOCK ³ÖÓй²ÏíËø£¬Ö±µ½Õû¸öÊÂÎñÍê³É£¬Ó¦¸ÃÔÚ±»Ëø¶ÔÏó²»ÐèҪʱÁ¢¼´ÊÍ·Å£¬µÈÓÚSERIALIZABLEÊÂÎñ¸ôÀë¼¶±ð
NOLOCK Óï¾äÖ´ÐÐʱ²»·¢³ö¹²ÏíËø£¬ÔÊÐíÔà¶Á £¬µÈÓÚ READ UNCOMMITTEDÊÂÎñ¸ôÀë¼¶±ð
PAGLOCK ÔÚʹÓÃÒ»¸ö±íËøµÄµØ·½Óöà¸öÒ³Ëø
READPAST ÈÃsql serverÌø¹ýÈκÎËø¶¨ÐУ¬Ö´ÐÐÊÂÎñ£¬ÊÊÓÃÓÚREAD UNCOMMITTEDÊÂÎñ¸ôÀë¼¶±ðÖ»Ìø¹ýRIDËø£¬²»Ìø¹ýÒ³£¬ÇøÓòºÍ±íËø
ROWLOCK Ç¿ÖÆÊ¹ÓÃÐÐËø
TABLOCKX Ç¿ÖÆÊ¹ÓöÀÕ¼±í¼¶Ëø£¬Õâ¸öËøÔÚÊÂÎñÆÚ¼ä×èÖ¹ÈÎºÎÆäËûÊÂÎñʹÓÃÕâ¸ö±í
UPLOCK Ç¿ÖÆÔÚ¶Á±íʱʹÓøüжø²»Óù²ÏíËø
×¢Òâ: Ëø¶¨Êý¾Ý¿âµÄÒ»¸ö±íµÄÇø±ð
SELECT * from table WITH (HOLDLOCK) ÆäËûÊÂÎñ¿ÉÒÔ¶ÁÈ¡±í£¬µ«²»ÄܸüÐÂɾ³ý
SELEC
Ïà¹ØÎĵµ£º
DBCC memorystatus
--²éѯ»º³åÇø³ØÏûºÄµÄÄÚ´æ×ÜÁ¿°üÀ¨AWE
SELECT
SUM(multi_pages_kb+virtual_memory_committed_kb+shared_memory_committed_kb+
awe_allocated_kb) AS [Used by BPool, kb]
from sys.dm_os_memory_clerks WHERE type='MEMORYCLERK_SQLBUFFERPOOL'
&nb ......
sql serverÊý¾ÝÀàÐÍcharºÍnchar,varcharºÍnvarchar,textºÍntextÔÊÐíµÄ×Ö·û³¤¶È
×Ö·û´®
char
¹Ì¶¨³¤¶ÈµÄ·Ç Unicode ×Ö·ûÊý¾Ý£¬×î´ó³¤¶ÈΪ 8,000 ¸ö×Ö·û¡£
varchar
¿É±ä³¤¶ÈµÄ·Ç Unicode Êý¾Ý£¬×Ϊ 8,000 ¸ö×Ö·û¡£
text
¿É±ä³¤¶ÈµÄ·Ç Unicode Êý¾Ý£¬×î´ó³¤¶ÈΪ 2^31 - 1 (2,147,483,647) ¸ö×Ö·û¡£
Unicode ×Ö·û´®
......
ÎÒÃÇÕâÀï¶Ô SQL Server ×Ö·û´®º¯Êý½øÐзÖÃűðÀàµØÁгö£¬±ãÓÚ²éÔĺͼÇÒ䣬ÏàÐÅ´ó¼Ò¶¼ÔÚÆäËü·½ÃæÓиßÉîµÄ±à³Ì»ù´¡£¬´Ó×ÖÃæÉÏÀ´Ëµ´ó¼Ò¶¼ÖªµÀÕâЩº¯ÊýµÄÒâÒ壬¾Í²»¶ÔÕâЩº¯Êý×÷¹ý¶àµÄ½âÊÍÁË£¬Ö÷Ҫ̸Щ¾Ñ飬¾ßÌåÇë²Î¼ûÁª»ú´ÔÊé¡£
ASCII(character_expression) ·µ»Ø×î×ó¶Ë×Ö·ûµÄ ASCII ´úÂëÖµ
CHAR(integer_expression)
UNICO ......
--¾ÛºÏº¯Êý
use pubs
go
select avg(distinct price) --ËãÆ½¾ùÊý
from titles
where type='business'
go
use pubs
go
select max(ytd_sales) --×î´óÊý
from titles
go
use pubs
go
select min(ytd_sales) --×îСÊý
from titles
go
use pubs
go
select type,sum(price),sum(advance)  ......
ϵͳº¯Êý
1.case when ... then ..else ..end(ÓÃÓÚ¶ÔÌõ¼þ½øÐвâÊÔ)
e.Select id,case when name='deepwishly' then 'ÀÏ´ó' else 'ÆäËû' end as Type
ÏÔʾ id type
1 ÀÏ´ó
2.cast()/convert() ǰÕß¾ßÓÐANSI SQL-92¼æÈÝÐÔ£¬ºóÕß¹¦ÄܸüÇ ......