`
wsql
  • 浏览: 11809193 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

多进程与多线程(十五) ---MySQL

 
阅读更多

3.2 多线程结构的数据库管理系统――MySQL

在MySQL中我们通过搜索CreateProcess等函数可以知晓,MySQL是多线程结构。

表1-Windows系统下涉及的函数

搜索的函数

涉及的文件

功能分析

_beginthreadex

extra\yassl\testsuite\Testsuite.cpp

测试相关,不涉及数据库服务器的结构

_beginthread

mysys\My_winthread.c

MySQL自定义了一个函数pthread_create(与Linux下的pthread_create函数同名),在windows系统下,pthread_create调用_beginthread实现线程创建。

调用序列如下:

os_thread_create->pthread_create->_beginthread

通过自定义的pthread_create函数创建的线程有:

1. io_handler_thread

2. srv_lock_timeout_and_monitor_thread

3. srv_error_monitor_thread

4. srv_master_thread

5. trx_rollback_or_clean_all_without_sess

另外,MySQL定义了一个Threads类,通过此类的方法createThread调用windows下的CreateThread函数或linux下的pthread_create函数来创建线程。与此相关被创建的线程包括:

Database:数据库实例

PageWriter:刷出数据到外存

Scheduler:调度功能

SerialLog:日志

Server:socket监听进程

CreateThread

os_thread_create-> CreateThread

多进程与多线程(十五) - 那海蓝蓝 - 那海蓝蓝的博客

CreateProcess

表2-Linux系统下涉及的函数

搜索的函数

涉及的文件

功能分析

pthread_create

storage\innobase\io\os0thread.c

os_thread_create-> pthread_create

innobase_start_or_create_for_mysql-> os_thread_create

如果是linux系统,直接使用“pthread_create”函数,这在“my_pthread.h”通过宏对的pthread_create的限制可以看出,在“os0thread.c”中“os_thread_create”函数体可以看出。

linux等系统下使用的是NPTL中的“pthread_create”函数,而在windows下则模拟了此函数。

fork

libmysqld\stacktrace.c

storage\ndb\src\kernel\main.cpp

storage\ndb\src\cw\cpcd\process.cpp

Other files

同测试相关(tests目录下)或和pl脚本相关

从上述两表可以看出,MySQL和线程基本没有关系,只是局部的代码因操作系统平台不同使用了程序,而数据库服务器引擎的主要部分postmaster没有使用线程,而是通过internal_forkexec创建了诸多相关进程。可见其隶属于多进程结构。


分享到:
评论

相关推荐

    mysql-installer-community-8.0.19.0.msi

    1、mysql的核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的系统资源。用多线程和C语言实现的mysql能很容易充分利用CPU。 2、mysql可运行在不同的操作系统下。简单地说,...

    2017最新老男孩MySQL高级专业DBA实战课程全套【清晰不加密】,看完教程月入40万没毛病

    第十五部 MySQL数据库优化思想与优化实战(9节) 1-网站打开慢mysql问题多解决方案企业案例.avi 2-MySQL索引优化要点精讲01 3-MySQL索引优化生产案例讲解02 4-linux运维人员必须掌握的核心经验案例.avi MySQL数据库...

    Python实现 多进程导入CSV数据到 MySQL

    对于这个量级的数据,用简单的单进程/单线程导入 会耗时很久,最终用了多进程的方式来实现。具体过程不赘述,记录一下几个要点: 批量插入而不是逐条插入 为了加快插入速度,先不要建索引 生产者和消费者模型,...

    Python爬取股票数据存入mysql,获取股票(最新、最高、今开、成交量、成交额、量比、换手率、涨幅)支持多线程+数据库连接池

    多进程爬虫`insertRecordsMultiProcesses.py` 的参考时间为150秒 多线程爬虫`insertRecordsMultiThread.py`的参考时间为146秒 多线程+数据库连接池爬虫`insertRecordsMultiThreadConnectionPool.

    多进程mysql,和传统MySQL Server 不同.rar

    支持多线程,充分利用 CPU 资源,支持多用户。 优化的 SQL 查询算法,有效地提高查询速度。 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。

    MySQL 5.1参考手册

    2.3.14. 在Windows环境下对MySQL安装的故障诊断与排除 2.3.15. 在Windows下升级MySQL 2.3.16. Windows版MySQL同Unix版MySQL对比 2.4. 在Linux下安装MySQL 2.5.在Mac OS X中安装MySQL 2.6. 在NetWare中安装MySQL 2.7....

    完整版 Python高级开发课程 高级教程 08 Python多线程 多进程开发.pptx

    【Python高级开发课程 高级教程】课程列表 01 Python语言开发要点详解.pptx 02 Python数据结构.pptx ...08 Python多线程 多进程开发.pptx 09 Python爬虫框架Scrapy实战.pptx 10 Python Web开发框架Django实战.pptx

    mysql数据库CPU高,实时抓住数据库执行中的SQL语句,shell工具(支持mysql5.7)

    #对于多线程,每个线程CPU利用率都低于5%的也不纳入统计,5%数值可以自行调整。 # #执行前确保mysql的环境变量 #需要安装bc命令yum install bc -y 脚本需要在服务器执行,执行前主要修改数据库认证信息: 数据库...

    MySQL 5.1官方简体中文参考手册

    2.3.14. 在Windows环境下对MySQL安装的故障诊断与排除 2.3.15. 在Windows下升级MySQL 2.3.16. Windows版MySQL同Unix版MySQL对比 2.4. 在Linux下安装MySQL 2.5.在Mac OS X中安装MySQL 2.6. 在NetWare中安装MySQL ...

    MySql 5.1 参考手册.chm

    2.3.14. 在Windows环境下对MySQL安装的故障诊断与排除 2.3.15. 在Windows下升级MySQL 2.3.16. Windows版MySQL同Unix版MySQL对比 2.4. 在Linux下安装MySQL 2.5.在Mac OS X中安装MySQL 2.6. 在NetWare中安装MySQL 2.7....

    Python django使用多进程连接mysql错误的解决方法

    mysql 查询出现错误 error: (2014, “Commands out of sync; you can’t run this command now”)1 查询 mysql文档中的解释  If you get Commands out of sync; you can’t run this command now in your client...

    MySQL 5.1中文手冊

    2.3.14. 在Windows环境下对MySQL安装的故障诊断与排除 2.3.15. 在Windows下升级MySQL 2.3.16. Windows版MySQL同Unix版MySQL对比 2.4. 在Linux下安装MySQL 2.5.在Mac OS X中安装MySQL 2.6. 在NetWare中安装MySQL 2.7....

    MySQL5.1参考手册官方简体中文版

    北京万里开源软件有限公司在全国范围提供MySQL产品相关的商务及 技术方面的咨询与支持服务。垂询请致电:8610-65694500,或发送邮件至:sales@greatlinux.com. 本手册编译于2006-7-29,目录及索引由官方HTML文档...

    mysql5.1中文手册

    MySQL与标准SQL的差别 1.8.6. MySQL处理约束的方式 2. 安装MySQL 2.1. 一般安装问题 2.1.1. MySQL支持的操作系统 2.1.2. 选择要安装的MySQL分发版 2.1.3. 怎样获得MySQL 2.1.4. 通过MD5校验和...

    MySQL 5.1参考手册中文版

    2.3.14. 在Windows环境下对MySQL安装的故障诊断与排除 2.3.15. 在Windows下升级MySQL 2.3.16. Windows版MySQL同Unix版MySQL对比 2.4. 在Linux下安装MySQL 2.5.在Mac OS X中安装MySQL 2.6. 在NetWare中安装MySQL ...

    MySQL 5.1参考手册 (中文版)

    2.3.14. 在Windows环境下对MySQL安装的故障诊断与排除 2.3.15. 在Windows下升级MySQL 2.3.16. Windows版MySQL同Unix版MySQL对比 2.4. 在Linux下安装MySQL 2.5.在Mac OS X中安装MySQL 2.6. 在NetWare中安装MySQL 2.7....

    nServer-v2.1023[FTP + MYSQL + HTTP + PHP(FCGI)]

    - 优化MySQL-InnoDB配置文件 - 优化PHP-FCGI进程管理脚本 2011年12月10日 - PHP-FCGI采用每进程唯一端口的方式,解决高并发502错误频繁的问题 2011年11月30日 - 更新Nginx版本到1.0.10 2011年11月28日 - 再次细化...

    migration-tool:mysql数据迁移工具。支持指定表名、列名,多线程+多进程。保证高可用,数据一致性

    migration-toolmysql数据迁移工具。支持指定表名、列名,多线程+多进程。保证高可用,数据一致性。

    MYSQL中文手册

    2.3.14. 在Windows环境下对MySQL安装的故障诊断与排除 2.3.15. 在Windows下升级MySQL 2.3.16. Windows版MySQL同Unix版MySQL对比 2.4. 在Linux下安装MySQL 2.5.在Mac OS X中安装MySQL 2.6. 在NetWare中安装MySQL...

Global site tag (gtag.js) - Google Analytics