mysql 6 中关于网络层 IO 的设计,在下面这个链接中讲了大体的思路
http://forge.mysql.com/worklog/task.php?id=441
首先提到了目前的设计,one_thread_per_connect 模型。
引用
......
- A new thread is created to serve this socket. (Actually, with a
thread cache, it might reuse an existing thtread.)
......
In short: The above design does not scale.
新的设计看起来是一个 半同步半异步 模型,使用 libevent 来管理网络层的 IO 。
引用
- One (main) thread loops over a select/poll where one (or more) of
the sockets is the one for new connections.
- If a new connection was made, accept it and add the new socket to
the set of sockets.
- Input on the other sockets is read and the incomming messages
each assembled.
- Each complete request is passed on to a pthread condition
variable protected queue.
- A (fixed) pool of service threads waits for new requests on the
queue.
- When a new requests is received in the queue, one of the threads
will grab it and handle it, and then return to grab new requests
from the queue.
有一个 main 线程负责处理 IO ,有一个线程池负责处理具体的 SQL 事务。
引用
- It's possible to have more than one "main" thread doing the I/O,
if the I/O is believed to be a bottleneck in large, high-load
installations. However, this also causes some problems, with load
balancing among other things. A first step should be limited to
just having one main thread.
对比 memcached ,同样在 多线程 环境下使用 libevent ,但是两者还是有不同。
memcached 的具体事务可以直接在 event_loop 线程中进行处理,但是 mysql 的就不行。
所以 mysql 还需要有一个工作者线程池。
分享到:
相关推荐
通过手撕网络IO多线程实现服务端与客户端分离的小项目,服务获取是反射实现的,带你深度体会4行代码操控整个service层。客户端是命令行,服务器是带界面的。有双击运行的bat文件。数据库默认账号密码都是root。...
mysql innodb的监控(系统层,数据库层) 关于MySQL 的监控,mysql提供了数据采集的命令,比如show status命令或者读取数据库informat_schema的GLOBAL_STATUS对象;也可以用一些现成的监控工具进行查询,目前用的...
通过网络传送binlog文件,理所当然网络延迟是主从不同步的绝大多数的原因,特别是跨机房的数据同步出现这种几率非常的大,所以做读写分离,注意从业务层进行前期设计。 1.2 主从两台机器的负载不一致 由于mysql主从...
例如,Java提供产生图形用户接口部件的类(java.awt包),这里awt是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。 分布性 Java设计成支持...
例如,Java提供产生图形用户接口部件的类(java.awt包),这里awt是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。 分布性 Java设计成支持...
例如,Java提供产生图形用户接口部件的类(java.awt包),这里awt是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。 分布性 Java设计成支持...
网络爬虫基础 网络爬虫的概述和原理 ...数据库的使用和操作(如MySQL、MongoDB等) 数据存储格式的选择和优化 实际案例分析 应用所学知识解决真实世界中的爬虫和IO问题 爬虫和IO项目开发流程与实践经验分享
接入层架构设计 DNS轮询 动静态分离 静态化 反向代理 LVS F5 CDN 逻辑层架构设计 连接池 串行化技术 影子Master架构 批量写入 配置中心 去中心化 通讯机制 同步 RPC RMI 异步 MQ Cron 数据层...
(2)Libevent网络框架库的使用 (3)服务器端线程池的使用以及其负载均衡 (4)MySQL数据库C接口的C ++类封装 (5)单例模式 (6)负载均衡算法之一致性hash算法 (7)CJson格式的消息封装 (8)MD5算法 二。项目...
本系统中的购物车功能设计、io读写图片存放本地、订单导出、echarts插件实现订单信息统计、后台批量操作、pagehelper实现分页等细节值得学习。 运行环境 jdk8+mysql+IntelliJ IDEA+maven+lombok 项目技术(必填) ...
网络通讯框架:t-io 3.2.5 工具集合:hutool 4.1.17 知识要点: 基于mybatis plus快速代码生成 封装与自定义Freemarker标签 redis的zset结构完成本周热议排行榜 t-io+websocket完成即时消息通知和群聊
从简到难,从网络通信探究分布式通信原理 基于消息方式的系统间通信 理解通信协议传输过程中的序列化和反序列化机制 基于框架的RPC通信技术 WebService/ApacheCXF RMI/Spring RMI Hession 传统RPC技术在大型...
网络 TCP 四次挥手 SYN Flood 如何避免 HTTP 头部字段 HTTP 请求方式 AIO OSI 七层模型 ARP 协议 Mysql Mysql 数据存储原理 Mysql 索引 abc 复合索引 数据库隔离级别 InnoDB 与 MySAIM 区别 Mysql MVCC JVM Java 类...
业界常⻅的涉及到网络通信的相关中间件大部分基于Netty实现网络层,如下图所示: 本工程致力于netty实践学习案例,是netty初学者及核心技术巩固的最佳实践 a。『基础-入门篇』 :OK_hand: :netty-helloworld b。 ...
10.5.3 使用System.IO 命名空间 10.6 访问SQLite 10.6.1 SQLite 简介 10.6.2 SQLite 连接方法 10.7 小结 第四篇 ASP.NET网络编程 第 11 章用户控件和自定义控件 11.1 用户控件 11.1.1 什么是用户控件 11.1.2 编写一...
10.5.3 使用System.IO命名空间 10.6 访问SQLite 10.6.1 SQLite简介 10.6.2 SQLite连接方法 10.7 小结 第四篇 ASP.NET网络编程 第11章 用户控件和自定义控件 11.1 用户控件 11.1.1 什么是用户控件 11.1.2 编写一个...
10.5.3 使用System.IO命名空间 10.6 访问SQLite 10.6.1 SQLite简介 10.6.2 SQLite连接方法 10.7 小结 第四篇 ASP.NET网络编程 第11章 用户控件和自定义控件 11.1 用户控件 11.1.1 什么是用户控件 11.1.2 编写一个...
10.5.3 使用System.IO命名空间 10.6 访问SQLite 10.6.1 SQLite简介 10.6.2 SQLite连接方法 10.7 小结 第四篇 ASP.NET网络编程 第11章 用户控件和自定义控件 11.1 用户控件 11.1.1 什么是用户控件 11.1.2 编写一个...
10.5.3 使用System.IO命名空间 10.6 访问SQLite 10.6.1 SQLite简介 10.6.2 SQLite连接方法 10.7 小结 第四篇 ASP.NET网络编程 第11章 用户控件和自定义控件 11.1 用户控件 11.1.1 什么是用户控件 11.1.2 编写一个...
10.5.3 使用System.IO命名空间 10.6 访问SQLite 10.6.1 SQLite简介 10.6.2 SQLite连接方法 10.7 小结 第四篇 ASP.NET网络编程 第11章 用户控件和自定义控件 11.1 用户控件 11.1.1 什么是用户控件 11.1.2 编写一个...