ÀûÓö¯Ì¬¹ÜÀíÊÓͼÌá¸ßSQL ServerË÷ÒýЧÂÊ
¡¡¾ÍÈçͬÊý¾Ý¿âDBAÁ˽âµÄÒ»Ñù£¬ºÏÊʵÄË÷ÒýÄܹ»Ìá¸ß²éѯÐÔÄܺÍÓ¦ÓóÌÐò¿É²âÁ¿ÐÔ¡£µ«ÊÇÿ¸ö¸½¼ÓµÄË÷Òý£¬¶¼¸øÏµÍ³Ôö¼ÓÁ˶îÍ⿪Ïú£¬ÒòÎªËæ×ÅÊý¾Ý´Ó±íºÍÊÓͼÖв»¶ÏÔö¼Ó¡¢Ð޸ĻòÇå³ý£¬SQL ServerÐèҪά»¤ÕâЩË÷Òý¡£
¡¡¡¡Ö®Ç°£¬ÎÒ½éÉÜÁËһ϶¯Ì¬¹ÜÀíÊÓͼ(DMV)¡£ËüÊÇÒ»ÖÖºÜÓÐÓÃµÄ¼à¿ØºÍ½â¾öSQL Server¹ÊÕϵŤ¾ß¡£±¾ÎÄÊÇËüµÄÐøÆª£¬ÎÒ½«¼ÌÐøºÍ´ó¼ÒÒ»Æð̽ÌÖÆäËûµÄһЩÊý¾Ý¿â¹ÜÀíÔ±ÓÃÀ´Äܹ»²â¶¨ÏÖ´æË÷ÒýЧÂʵĶ¯Ì¬¹ÜÀíÊÓͼ(DMV)ºÍ·ÖƬ¼¶±ð¡£´ËÍ⣬ÎÒ»¹ÌṩÁËÓ¦¸ÃÓÃÀ´¼ìË÷Ö¸¶¨µÄSQL Server³ÌÐòIDºÅ(SPID)Ö´ÐеÄ×îºóÓï¾ä¡£
¡¡¡¡DMVÌá¸ßË÷ÒýЧÂÊ
¡¡¡¡¾ÍÈçͬÊý¾Ý¿âDBAÁ˽âµÄÒ»Ñù£¬ºÏÊʵÄË÷ÒýÄܹ»Ìá¸ß²éѯÐÔÄܺÍÓ¦ÓóÌÐò¿É²âÁ¿ÐÔ¡£µ«ÊÇÿ¸ö¸½¼ÓµÄË÷Òý£¬¶¼¸øÏµÍ³Ôö¼ÓÁ˶îÍ⿪Ïú£¬ÒòÎªËæ×ÅÊý¾Ý´Ó±íºÍÊÓͼÖв»¶ÏÔö¼Ó¡¢Ð޸ĻòÇå³ý£¬SQL ServerÐèҪά»¤ÕâЩË÷Òý¡£ÔÚ°²×°ÐµÄË÷Òý֮ǰ£¬ÄãÐèÒª¼ì²âÊý¾Ý¿â»î¶¯£¬±£Ö¤ÄãÖ»ÓÐһЩÄÜÌá¸ßƽ³£Ö´ÐеIJéѯµÄË÷Òý¡£×¢ÒâSQL Server²¢²»ÄÜ×èÖ¹ÄãÔÚÏàͬµÄÁÐÉϽ¨Á¢¶à¸öË÷Òý¡£ËüÒ²²»ÄÜÌáÐÑÄãÄã¼´½«½¨Á¢µÄ²éѯ²¢²»ÄÜÓÅ»¯²éѯ¡£
¡¡¡¡¸´ÖÆË÷Òý¶Ôϵͳ²¢Ã»Óкô¦¡£Í¬ÑùµØ£¬SQL Server²éѯÓÅ»¯³ÌÐò²»ÄÜÓýâ¾ö²éѯÎÊÌâµÄË÷ÒýÒ²²»ÄܶÔϵͳ´øÀ´Ê²Ã´ºÃ´¦¡£Òò´Ë£¬ÔÚÕâÀïÎÒÃÇÖÁ¹ØÖØÒªµÄÊÂÇé¾ÍÊÇÁ˽âË÷ÒýµÄÀûÓÃЧÂʺÍËüÃǶԲéѯÐÔÄܵÄÓ°Ïì¡£ÐÒÔ˵ÄÊÇ£¬SQL Server 2005ºÍ2008°üÀ¨ÁËsys.dm_db_index_usage_stats¶¯Ì¬¹ÜÀíÊÓͼ£¬ÎÒÃÇ¿ÉÒÔÓÃËüÀ´²âÁ¿Ë÷ÒýµÄЧÂÊ¡£ºÍËùÓÐÆäËûµÄ¶¯Ì¬¹ÜÀíÊÓͼһÑù£¬contents of sys.dm_db_index_usage_statsµÄÄÚÈÝÔÚÄãÖØÆôSQL ServerʵÀýʱ¾Í±»¶ªÆúÁË¡£ËùÒÔÈç¹ûÄãÏëÊÕ¼¯Ë÷ÒýʹÓÃͳ¼ÆÊý¾Ý£¬Äã¾ÍÓ¦¸Ã¶Ô×Ô¶¨Òå±í¶¨ÆÚ¸´ÖÆDMV¡£
¡¡¡¡Ã¿´ÎÓÃË÷Òý½øÐÐɨÃèʱ£¬DMV¾ÍÔö¼ÓÁËÔÚSQL ServerÖÐËÑË÷»ò²éÕÒÁС£ÀýÈçһϵIJéѯ¾ÍÔÚAdventureWorksDWʾÀýÊý¾Ý¿âÖмìË÷Óû§±íºÍÏàÓ¦ÊÓͼʹÓÃͳ¼Æ£º
¡¡¡¡SELECT
¡¡¡¡object_name(a.object_id) AS table_name£¬
¡¡¡¡COALESCE(name£¬ 'object with no clustered index') AS index_name£¬
¡¡¡¡type_desc AS index_type£¬
¡¡¡¡user_seeks£¬
¡¡¡¡user_scans£¬
¡¡¡¡user_lookups£¬
¡¡¡¡user_updates
¡¡¡¡from sys.dm_db_index_usage_stats a INNER JOIN sys.indexes b
¡¡¡¡ON a.index_id = b.index_id
¡¡¡¡AND a.object_id = b.object_id
¡¡¡¡WHERE database_id = DB_ID('AdventureWorksDW')
¡¡¡¡AND a.object_id > 1000
¡¡¡¡ÓÐÓõÄË÷ÒýÔÚuser_seeksÁÐÖеÄ×ÜÊý×î´ó¡£Òª×¢Òâuser_updatesÕâ
Ïà¹ØÎĵµ£º
SQL·ÖÀࣺ
¡¡¡¡DDL—Êý¾Ý¶¨ÒåÓïÑÔ(CREATE£¬ALTER£¬DROP£¬DECLARE)
¡¡¡¡DML—Êý¾Ý²Ù×ÝÓïÑÔ(SELECT£¬DELETE£¬UPDATE£¬INSERT)
¡¡¡¡DCL—Êý¾Ý¿ØÖÆÓïÑÔ(GRANT£¬REVOKE£¬COMMIT£¬ROLLBACK)
¡¡¡¡Ê×ÏÈ,¼òÒª½éÉÜ»ù´¡Óï¾ä£º
¡¡¡¡1¡¢ËµÃ÷£º´´½¨Êý¾Ý¿â
CREATE DATABASE database-name
¡¡¡¡2¡¢ËµÃ÷£ºÉ¾³ýÊý¾Ý¿â ......
IN
È·¶¨¸ø¶¨µÄÖµÊÇ·ñÓë×Ó²éѯ»òÁбíÖеÄÖµÏàÆ¥Åä¡£
EXISTS
Ö¸¶¨Ò»¸ö×Ó²éѯ£¬¼ì²âÐеĴæÔÚ¡£
±È½ÏʹÓà EXISTS ºÍ IN µÄ²éѯ
Õâ¸öÀý×ӱȽÏÁËÁ½¸öÓïÒåÀàËÆµÄ²éѯ¡£µÚÒ»¸ö²éѯʹÓà EXISTS ¶øµÚ¶þ¸ö²éѯʹÓà IN¡£×¢ÒâÁ½¸ö²éѯ·µ»ØÏàͬµÄÐÅÏ¢¡£
USE pubs
GO
SELECT DISTINCT pub_name
from publishers
WHERE ......
ÔÚ¶ÔSQL ServerϵͳִÐÐÈëÇÖ²âÊÔ»òÕ߸ü¸ß¼¶±ðµÄ°²È«Éó¼ÆÊ±£¬ÓÐÒ»ÖÖ²âÊÔ²»Ó¦¸Ã±»ºöÂÔ£¬ÄǾÍÊÇSQL ServerÃÜÂë²âÊÔ¡£ÕâÒ»µã¿´ÆðÀ´ÏÔ¶øÒ×¼û£¬µ«ÊǺܶàÈ˶¼»áºöÂÔËü¡£
¡¡¡¡ÃÜÂë²âÊÔ¿ÉÒÔ°ïÖú¼ì²é¶ñÒâÈëÇÖÕß»òÕßÍⲿ¹¥»÷Õߣ¬²âÊÔËûÃÇҪǿÐнøÈëÊý¾Ý¿âÓжàÈÝÒ×£¬¶øÇÒ»¹¿ÉÒÔÈ·±£SQL ServerÓû§¶ÔËûÃǵÄÕ˺ŸºÔð¡£´ËÍ⣬²âÊÔÃÜÂëµÄ© ......
¶ÔÓÚSQL ServerÊý¾Ý¿â¹ÜÀíÔ±À´½²£¬ÒÑÂúÊÂÎñÈÕÖ¾ÊÇÒ»¸öËöËéµÄ£¬µ«Óֺܳ£¼ûµÄÎÊÌâ¡£ËüÄÜÒý·¢ÊÂÎñµÄÌáǰÖÕÖ¹£¬ÉõÖÁͨ¹ý×èÖ¹ËùÓÐÊÂÎñµÄÒýÈ룬´Ó¶øÒýÆðϵͳµÄ±ÀÀ£¡£¶ÔÓÚÊý¾Ý¿â¹ÜÀíÔ±À´Ëµ£¬¹Ø¼üÊÇÀí½â½«Òª·¢ÉúµÄÇé¿ö£¬ÒÔ±ãËûÃÇ¿ÉÒÔ×·×ÙÒýÆðÎÊÌâµÄÔÒò¡£ ÊÂÎñÈÕÖ¾Ìî³ä·½Ê½
¡¡¡¡ÒÔÏÂÊÇһЩ¿ÉÄÜÒýÆðÊÂÎñÈÕÖ¾ÌîÂúµÄÔÒò£º
¡¡¡¡ÌîÂúµ ......