zoukankan      html  css  js  c++  java
  • SQL Server 学习系列之四(SQL 内幕)

    SQL Server 学习系列之四(SQL 内幕)

         SQL Server 学习系列之一(薪酬方案+基础)

         SQL Server 学习系列之二(日期格式问题)

         SQL Server 学习系列之三(SQL 关键字)

    学习《Microsoft SQL Server 2005技术内幕:存储引擎》的代码笔记备录于此:

      1 select @@VERSION
      2 
      3 select * from sys.dm_exec_requests  --资源监视器 DMV
      4 
      5 select tb.status
      6 ,tb.command
      7 ,tb.statement_end_offset
      8  from sys.dm_os_workers ta,sys.dm_exec_requests tb
      9 where ta.task_address=tb.task_address
     10 
     11 select parent_node_id
     12 --调度器所属节点的ID,表示非一致性内存访问节点(NUMA)
     13 ,scheduler_id--调度器的ID
     14 ,cpu_id
     15 ,is_online--0表示此调度器不会用来处理查询或批
     16 ,current_tasks_count
     17 ,current_workers_count--线程数
     18 ,active_workers_count
     19 ,work_queue_count
     20 ,pending_disk_io_count--挂起的I/O数
     21 load_factor --内部值,指示此调度器感觉到的负载
     22 from sys.dm_os_schedulers --视图为每个调度器返回一行
     23 
     24 select is_preemptive
     25 --1=正在抢先计划运行工作线程
     26 ,is_fiber --1=正在以轻型池运行的工作线程
     27 ,*
     28 from sys.dm_os_workers  --视图为每个工作任务返回一行
     29 
     30 select 
     31 started_by_sqlservr
     32  --线程发起方 0:由其他组件启动(如,扩展进程);1:SQL已启动进程
     33 ,creation_time
     34 ,stack_bytes_committed
     35 ,affinity 
     36 --进程在其运行的CPU掩码,取决于sp_configure affinity mask 配置选项中的值
     37 ,locale --线程的缓冲的区域设置为LCID
     38 from sys.dm_os_threads  --返回在SQL Server进程中的所有SQLOS线程列表
     39 
     40 select 
     41 task_state
     42 --SUSPENDED:具有工作线程,但正在等待事件
     43 --RUNNING:当前正在调度器中运行
     44 --DONE:已完成
     45 --PENDING:正在等待的工作线程
     46 --RUNNABLE:可运行,但正在等待接收量程
     47 --SPINLOOP:当等待一个信号时,陷入自旋锁
     48 ,context_switches_count
     49 ,pending_io_count --此任务执行的物理I/O数
     50 ,pending_io_byte_average
     51 ,pending_io_byte_count
     52 ,scheduler_id --父调度器ID
     53 ,session_id --与任务关联的会话ID
     54 from sys.dm_os_tasks--为实例上每一个活动的任务返回一行
     55 
     56 select 
     57 session_id
     58 ,exec_context_id--与任务关联的执行上下文的ID
     59 ,wait_duration_ms
     60 ,wait_type
     61 ,resource_address
     62 ,blocking_session_id
     63 ,blocking_exec_context_id--正在阻塞的任务的执行上下文的ID
     64 ,resource_description
     65 from sys.dm_os_waiting_tasks --返回正在等待资源的任务队列的信息
     66 
     67 select *
     68 from sys.tcp_endpoints ta,sys.dm_exec_sessions tb
     69 where ta.endpoint_id=tb.endpoint_id
     70 
     71 select removed_last_round_count,* from sys.dm_os_memory_cache_clock_hands
     72 
     73 --内存经纪(Broker):分析SQL Server 有关内存消耗的行为并改善动态内存分配的
     74 
     75 select * from sys.dm_os_ring_buffers
     76 where ring_buffer_type='RING_BUFFER_MEMORY_BROKER'
     77 
     78  --显示一个内存组件使用了多少缓存池之外的空间
     79 select type
     80 ,SUM(multi_pages_kb) as 'total(kb)'
     81  from sys.dm_os_memory_clerks
     82  where multi_pages_kb!=0
     83  group by type
     84  
     85  select SUM(multi_pages_kb)/1024.0 as 'total(M)'
     86  from sys.dm_os_memory_clerks
     87  where multi_pages_kb!=0
     88  
     89  select distinct type from sys.dm_os_memory_clerks
     90 
     91 select physical_memory_in_bytes--/(8.0*1024*1024*1024) --可用物理内存的数量
     92 ,virtual_memory_in_bytes--/(8.0*1024*1024*1024)  
     93 --对用户模式进程可用的虚拟内存的数量,通过3G开关,可以用它来确定SQLServer是否启动
     94 ,bpool_committed --缓冲池中的8K缓冲区数:已提交的物理内存
     95 ,bpool_commit_target --缓存池中最优的缓冲区数量
     96 ,bpool_visible  
     97 from sys.dm_os_sys_info  --动态管理视图
     98 
     99 select single_pages_kb
    100 ,single_pages_in_use_kb
    101 ,multi_pages_kb
    102 ,multi_pages_in_use_kb
    103 ,entries_count--缓存中的条目数
    104 ,entries_in_use_count
    105 ,*
    106 from sys.dm_os_memory_cache_counters
    107 --为用户存储仓库和高速缓冲仓库类型的每个高速缓冲返回一份关于其健康情况的快照
    108 
    109 select buckets_count --哈希表中的存储桶数
    110 ,buckets_in_use_count
    111 ,buckets_min_length
    112 ,buckets_max_length
    113 ,buckets_avg_length  --如果这个数字很大,可能意味着所用的哈希算法不太理想
    114 ,buckets_avg_scan_hit_length --如果这个数字很大,可能意味着高速缓存并不是最优的
    115 --详见http://technet.microsoft.com/zh-cn/library/ms178529.aspx
    116 from sys.dm_os_memory_cache_hash_tables  --为SQL Server实例中的每个活动的高速缓存返回一行
    117 
    118 --A.从资源调控器池缓存释放未使用的缓存条目
    119 --下面的示例说明如何清除专属于某个指定资源调控器资源池的缓存。
    120 DBCC FREESYSTEMCACHE ('ALL');
    121 --B.当不再使用条目后,将它们分别从其各自所属的缓存中释放
    122 --下面的示例使用 MARK_IN_USE_FOR_REMOVAL 子句,在不再使用条目后将它们从所有当前缓存中释放。
    123 DBCC FREESYSTEMCACHE ('ALL') WITH MARK_IN_USE_FOR_REMOVAL;
    124 
    125 
    126 select clock_hand  --表类型:外部和内部
    127 ,clock_status --时钟的状态:挂起和运行
    128 ,rounds_count --时钟表针已经转过的圈数
    129 ,removed_all_rounds_count --时钟表针在所有的周转中删除的条目数
    130 from sys.dm_os_memory_cache_clock_hands
    131 
    132 --观察内存
    133 dbcc memorystatus
    134  
    View Code
  • 相关阅读:
    kioptrix-1
    4.4 CSRF
    upload-labs 练习笔记
    4.3 XSS
    外国人是怎样读编程书的呢?
    如何快速学习新语言
    Go开发环境配置
    Golang Package I
    MVC模式小结
    Flask基础知识
  • 原文地址:https://www.cnblogs.com/zhangbc/p/3439571.html
Copyright © 2011-2022 走看看