12

2009.10.12 每日杂记 线程和任务体系结构等

读书
《SQL Server的联机丛书》 - 线程和任务体系结构
1、线程是操作系统的功能,可以通过线程将应用程序逻辑分到几个并发的执行路径中。
2、操作系统执行应用程序实例时,创建一个进程来管理该实例,进程包含一个执行线程。
3、一个CPU每次只能执行一个线程,但可以根据需要切换执行线程。
4、每个SQL Server实例都是一个单独的操作系统进程,SQLServer实例使用Windows线程或者纤程来处理成千上万的并发任务。
5、SQL Server实例有一个内部层,实现类似于操作系统的环境,用来计划和同步并发任务,更高效的使用纤程或Window线程,而不需要调用Windows内核。
6、SQL Server实例维护一个Windows线程池或纤程池来处理用户的查询,该池的最大大小由 max worker threads 配置项控制。
7、max worker threads的默认选项是0,由SQL Server自动配置,一般情况下会为每个查询请求创建一个单独的操作系统线程,但对于连接数数以百计时,为每个查询请求使用一个线程会占用大量系统资源,所以要更加CPU的数量来设置合适的最大线程数,保证系统总体性能。
8、工作线程是SQL Server中的逻辑线程,从内部映射到Windows线程或纤程。
9、纤程是轻型线程,它需要的资源比Windows线程少,而且可以在用户模式下切换上下文。一个Windows线程可映射到多个纤程,开启纤程模式的方法是将 lightweight pooling配置设置为1,但并不推荐开启纤程模式。
10、批处理:SQL 批处理是一个或多个T-SQL语句的集合,由客户端发送到SQL 实例以完成执行,它表示用户提交给数据库引擎的工作单元。
11、任务:任务表示SQL Server计划的工作单元。一个批处理可映射一个或多个任务。例如:一个并行查询可由多个任务执行。
12、SPID:当应用程序连接到数据库引擎时,为其分配一个会话ID(SPID),SQL Server实例从客户端接收到批处理请求时,将批处理分解成一个或多个任务,然后将每个任务与线程池中的工作线程关联,直到任务结束,如果没有可用的工作线程且数量已经达到 max worker threads值,则SQL Server实例将阻止新任务,直到有工作线程释放。
13、可通过 affinity mask 来配置CPU的分配,默认是系统分配,如果想把某个CPU预留给其他应用使用,可以配置affinity mask的值。
14、热添加CPU,SQL Server不会自动开始使用它们,需要通过RECONFIGURE来重新配置。
15、可通过 priority boost 配置选项来改变SQL Server实例的线程优先级,默认是7,可设置为13为高优先级,优先级的范围是0~31.
 
《悲伤逆流成河》
  中午吃完饭的时候翻了几章,暂不废话。
 
工作
依然是在调整联系人导入的模块的容错能力,根据错误日志有发现了几个可以避免的导入问题。
 
吃饭
上午,风QQ我说,啥时候有空,叫上侯子一块吃顿饭,我说只要不是周末都行
中午,风短信:“晚上银天龙干锅鸭头,候,郭,李,代,你五个人”,呵呵,没想到这家伙还挺效率,问他是不是又啥事。
晚上,大家基本上都挺准时,侯和郭有2年没见了,都是当父亲的人了,明显感觉成熟多了,李自大学毕业后这应该是第一次见,也丰韵了很多^_^,风不多说,经常见,不过今天几杯酒下肚后,他倒是吐出了个窝在心里很久的秘密让我很吃惊。真的很服气,这么长时间以来,他竟然藏的住,而且我之前经常和他开的玩笑应该都戳到他的伤口上了,没想到玩笑竟然成真了,他还能如此镇定,境界确实不同了。
他最后总结:时间会解决一切,看来每个人在感情问题上都很脆弱,呵呵,我也在等时间来解决一切。
侯,郭,李的生活还不错,都开始讨论第二胎的问题了,而我和风的情感世界却再次虚幻了。
 
还没有评论!
    第一个发布评论?
发表评论
 名字(必须)
 邮箱(可选)
 网址(可选)