`
iunknown
  • 浏览: 409566 次
社区版块
存档分类
最新评论

mysql 6 网络层 IO 的设计

阅读更多
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 还需要有一个工作者线程池。
分享到:
评论

相关推荐

    MySQL和IO 下1

    最后,MySQL的架构设计,如网络层、SQL层和存储层的分离,都有优化空间。网络层的老化可能导致性能瓶颈,新的架构如HS(Highly Scalable)应运而生。SQL层和存储层的数据交换开销、锁管理对性能的影响,以及NUMA架构...

    基于MySql的海量日志分析系统设计

    基于 MySql 的海量日志分析系统设计 本系统设计旨在解决海量日志数据的分析需求,通过对日志数据的实时处理和分析,提供可靠的数据支持给决策者。系统架构基于功能模块可以分为多个节点,包括采集节点、运算节点、...

    MySQL官方文档是学习MySQL的最佳资源之一.docx

    ### MySQL学习资源与实践案例详解 #### 一、MySQL学习资源概述 MySQL作为一种广泛使用的开源关系型数据库管理系统,在数据管理和处理方面发挥着重要作用。对于希望深入学习MySQL的开发者来说,选择合适的学习资源...

    MySQL优化 实战视频课程

    - **缓存策略**:利用Redis等内存数据库作为中间层,减轻MySQL负载。 ##### 5.2 大数据量下的性能提升 - **分页查询优化**:使用OFFSET和LIMIT时,采用子查询或临时表等技术减少数据加载量。 - **慢查询日志分析**...

    MySQL练习题.pdf

    2. **MySQL架构的区别**:MySQL与其他关系型数据库如SQL Server或Oracle的主要区别在于其架构设计,特别是连接层和存储引擎层的设计,使得MySQL在某些场景下更轻量级和高效。 3. **MySQL存储信息**:MySQL使用磁盘...

    MySQL5.7主从复制(Win10)及mybatis相关配置

    1. **安装和配置MySQL**:在两台服务器上安装MySQL5.7,并确保它们能够通过网络互相通信。 2. **设置主服务器**:在主服务器上,开启binlog,配置server_id,并修改my.cnf配置文件以允许远程连接。 3. **创建备份**...

    MySQL线上常见故障剖析

    在MySQL的日常运维中,经常会出现各种各样的故障,这些故障可能源自于不同的层面,包括但不限于应用层、数据库层、操作系统层等。通过对这些故障的深入分析,可以帮助我们更好地理解和解决实际问题。 #### 二、常见...

    Java 基础、并发、JVM、计算机网络、操作系统、MySQL、Redis、高并发设计等常见面试问题汇总

    为了在面试中脱颖而出,理解并掌握Java的基础、并发、JVM(Java虚拟机)、计算机网络、操作系统、MySQL数据库、Redis缓存以及高并发设计至关重要。下面将详细阐述这些领域的关键知识点。 1. **Java基础**: - **...

    Java个人资产管理系统、网络IO多线程、反射

    通过手撕网络IO多线程实现服务端与客户端分离的小项目,服务获取是反射实现的,带你深度体会4行代码操控整个service层。客户端是命令行,服务器是带界面的。有双击运行的bat文件。数据库默认账号密码都是root。...

    MySQL全面优化思路1

    6. **MySQL三层结构及参数优化**: - 客户端层:优化连接池配置,减少连接开销。 - 服务器层:调整参数如`innodb_buffer_pool_size`,`max_connections`等,适应系统负载。 - 存储引擎层:针对不同存储引擎...

    mysql innodb的监控(系统层,数据库层)

    mysql innodb的监控(系统层,数据库层) 关于MySQL 的监控,mysql提供了数据采集的命令,比如show status命令或者读取数据库informat_schema的GLOBAL_STATUS对象;也可以用一些现成的监控工具进行查询,目前用的...

    基于Java和MySQL的C/S结构的商品房销售中的客户信息管理系统

    【基于Java和MySQL的C/S结构的商品房销售中的客户信息管理系统】是一款面向对象编程的课程设计项目,采用经典的MVC(Model-View-Controller)三层架构模式,旨在为商品房销售提供一套高效、稳定的客户信息管理解决...

    基于JAVA的网络通讯系统设计与实现(论文+系统)

    6. **数据库交互**:一个完整的网络通讯系统往往需要存储和处理大量数据,因此很可能使用了Java的JDBC API来连接和操作数据库,如MySQL、Oracle等,实现数据的增删改查功能。 7. **用户界面设计**:项目可能包含...

    开源项目-liftbridge-io-liftbridge.zip

    Liftbridge是由Nats.io团队开发的一个开源项目,它的全称是"Liftbridge.io Liftbridge",主要功能是提供轻量级、高容错性的消息流服务。在深入理解这个项目之前,我们先来了解一下消息流的基本概念。消息流是一种...

    mysql读写分离实现.doc

    - 配置Amoeba的proxy连接参数,包括绑定的端口、网络IO读取线程大小和客户端处理线程大小等。 - 设置Amoeba与各个MySQL服务器的连接信息。 完成上述步骤后,MySQL读写分离环境已经搭建完毕。客户端的所有读请求将...

    基于Boost.Asio的MySQLC++客户端.zip

    6. **SQL查询**:客户端需要能够构建和执行SQL查询语句来与MySQL服务器交互,包括数据的CRUD(创建、读取、更新、删除)操作以及更复杂的查询如JOIN、GROUP BY等。 7. **错误处理**:在与MySQL服务器的交互中,...

    java mysql 数据库备份和还原操作(csdn)————程序.pdf

    总的来说,这段Java代码展示了如何在Spring MVC框架中实现对MySQL数据库的备份和还原功能,利用了Java的IO流处理、日志记录以及Spring的依赖注入。实际使用时,需要根据具体的备份和还原策略,以及数据库配置,填充...

    MySQL 主从原理、问题、解决方案和应用-淘宝大牛丁奇

    2. **Slave端**:Slave服务器通过IO线程连接Master服务器,请求获取最新的Binary Log文件,并将其存储在本地的Relay Log中。 3. **数据同步**:Slave服务器的SQL线程读取Relay Log中的事件,并执行这些事件,从而使...

    经典的java_mysql图书管理系统

    3. **Java IO/NIO**:用于文件读写、网络通信。 4. **Servlet和JSP**:Java Web开发中的重要组件,用于处理HTTP请求和展示页面。 5. **MVC设计模式**:模型-视图-控制器架构,用于分离业务逻辑、数据和用户界面。 6....

Global site tag (gtag.js) - Google Analytics