Mysql源代码阅读笔记(四) 服务器监听
来源:互联网 发布:免费地磅称重软件 编辑:程序博客网 时间:2024/05/22 04:58
(一)服务器/客户端版本
1. 入口点:
handle_connections_sockets()函数
我们在此要用实例程序做实验,学习Mysql服务器所使用的两种事件监听技术:select和poll同时介绍更给力的事件监听技术epoll和libevent。
代码SVN地址:
2. 线程策略:
Mysql支持 单线程和多线程 两种连接线程数。
如果是单线程,则在同一时刻,只能有一个connection连接到Mysql,其他的连接会被挂起。
如果是多线程,则同一时刻可以支持多个connection同时连接到服务器。
一般单线程的方式很少采用。
多线程的方式中,采用了线程缓冲池的策略。
即如果一个连接断开后,其所创建的线程不会被销毁掉,而是放到缓冲池中,等待下一个新的connection到来时,首先去线程缓冲池查找是否有空闲的线程,有的话直接使用,没有的话才去创建新的线程来管理这个connection。
可以通过设置服务器的启动参数来设定连接的线程数:
mysqld.exe --thread-handling=no-threadsmysqld.exe --thread-handling=one-thread-per-connection我们查看相关代码:目前就两种类型,如下enum scheduler_types{ SCHEDULER_ONE_THREAD_PER_CONNECTION=0, SCHEDULER_NO_THREADS, SCHEDULER_TYPES_COUNT};get_options()函数里面:嵌入式数据库,肯定是用单线程。服务器版本,则根据命令行参数决定采用单线程或者每连接一个线程。#ifdef EMBEDDED_LIBRARY one_thread_scheduler();#else if (thread_handling <= SCHEDULER_ONE_THREAD_PER_CONNECTION) one_thread_per_connection_scheduler(); else /* thread_handling == SCHEDULER_NO_THREADS) */ one_thread_scheduler();#endif
- Mysql源代码阅读笔记(四) 服务器监听
- mysql阅读笔记四
- Robot Framework 源代码阅读笔记 之四
- Mysql源代码阅读笔记(一) 代码流程
- Mysql源代码阅读笔记(二) 重要数据结构
- Mysql源代码阅读笔记(三) 重要的宏
- Mysql源代码阅读笔记(六)命令汇总
- Mysql源代码阅读笔记(七)查询缓冲
- Mysql源代码阅读笔记(八) 词法、语法分析器
- Mysql源代码阅读笔记(九) 查询执行
- Mysql源代码阅读笔记(一) 命令行参数
- 阅读笔记(四)
- SDWebImage源代码阅读(四)
- 论文阅读笔记(四)
- javascript_core阅读笔记(四)
- FlaskBB阅读笔记(四)
- Mysql源代码阅读笔记(一) 系统变量和系统状态变量
- flask源代码阅读笔记(一)
- sleep和wait有什么区别
- 新手篇
- HDOJ Dividing DP
- 3087_Shuffle'm Up
- 开机特殊数据包的格式内容
- Mysql源代码阅读笔记(四) 服务器监听
- Debian / Ubuntu linux install kernel headers package
- 在Linux单机上运行Hadoop-0.19.0实例http://blog.csdn.net/shirdrn/article/details/5781776
- HDOJ Big Event in HDU 多重背包
- jquery 无刷新上传文件,xmlhttprequest是无法上传文件的。
- poj-1088滑雪
- C语言解析pcap文件得到HTTP信息实例
- 秀一下软件的最新版本截图!我的心血啊
- GDAL1.9.0版本编译后,打不开含中文路径文件的解决办法