MYSQL体系结构-来自期刊
MySQL三层体系结构 |-----------------------------------------------------------------------------------|
| mysqld-SQL层 |
|-----------------------------------------------------------------------------------|
| mysqld-表引擎适配层 |
-------------------------------------------------------------------------------------
| | | | | |
---------------- ----------- ------------- ------------ | --------------
| innoDB表引擎 | |BDB表引擎| MERGE表引擎| |HEAP表引擎| | |MYISAM表引擎 |
---------------- ----------- ------------- —----------- | |-------------
|
------------
|ISAM表引擎|
------------
SQL层主要完成SQL语句的词法分析,语法分析,权限检查等工作,
表适配器层根据用户SQL语句上下文,选择并激活用户当前操作的表引擎,执行具体的语句操作.
用户可用通过配置文件设定默认表引擎,default_table_type=HEAP 一条SQL语句的执行过程
:用户通过客户端向SQL服务器发送SQL语句
:服务器对应于用户的工作线程(执行数据库连接时建立)接收该SQL语句
:工作线程执行SQL层权限检查
:工作线程执行SQL层SQL语句解析
:工作线程执行SQL层必要的优化工作
:在3,,5步发生错误时,SQL层层构造相应的错误信息,由工作线程返回客户端
:工作线程执行完成SQL层操作后,激活表引擎适配层,选择对应的引擎.
:工作线程在被选择表引擎上执行,并在相应表引擎系统线程的配合下,完成具体的语句操作
:工作线程根据表引擎执行情况,给客户端返回结果 InnoDB表引擎的配置
:旁路配置
当MySQL服务器本身支持InnoDB,但管理员不打算使用InnoDB时使用该配置,这样即使数据库用户指定创建InnoDB表类型,服务器也不予支持.
可以节省内存以及磁盘空间,并可加快某些语句的执行(MYISAM和InnoDB表的区别)
:线程配置
2.1:并发线程数(innodb_thread_concurrency)
用于指定InnoDB引擎内允许同时并发的线程数量,当多个用户同时连接到服务器并使用InnoDB引擎时,将可能出现多个用户工作线程进入InnnoDB表引擎.
同时处于InnoDB层的用户工作线程越多,系统并发性越高,同时线程之间的互斥冲突可能越多,当达到一定量的时候,系统性能急剧下降,根据实际情况配置.
2.2:最长锁等待时间(innodb_lock_wait_timeout)
该配置项指定用户工作线程等待一个锁的最长时间,当一个InnoDb事务等待某个锁的时间超过该值时,InnoDB将自动回滚该事务.
这对于打破InnoDB可能发生的死锁相当重要,特别是执行Lock Tables命令时,InnoDB将无法控制这来自外部的锁.这就可能导致用户直接锁与InnoDB内部执行过程的
加锁发生死锁.该配置以秒单位,值过小,未发生死锁的事务频繁回滚,过大,死锁时间过长,影响InnoDB的有效执行效率.
2.3:I/O线程数(innodb_file_io_threads)
为了提高速度,InnoDB首先将数据读入内存缓存区,然后再写入磁盘,当读取数据时,InnoDB批量读入数据到缓冲区,方便后期查找.
这样就产生了内存缓冲区和磁盘之间的读写问题,InnoDB设置了专门的I/O线程来完成磁盘于内存缓冲区之间的读写操作.
:缓存管理配置
3.1:缓冲池大小(innodb_buffer_pool_size)
该配置项用于指定InnoDB所用缓冲池的大小.该缓冲池用户存储InnoDB表索引和表中数据,以缓存磁盘I/O速度.缓冲池越大,缓冲到内存中的索引和数据越多,其他进程能用的内存就越小.
此外,配置越大,数据丢失的风险越大(宕机时缓存区中的数据尚未刷新到磁盘,永久性丢失).
3.2:元数据缓冲池大小(innodb_additional_mem_pool_size)
innodb_buffer_pool_size指定的缓冲池用于缓存表索引和表数据,该配置指定缓冲池中用于存放表定义信息等元数据,该配置为一初始化配置,若InnoDB存放元数据
大小超过该配置,自动向操作系统申请.
3.3:日志缓冲区大小(innodb_log_buffer_size)
当事务执行过程中,InnoDB会不断产生日志,以提供数据恢复功能.当InnoDB生成日志时,首先将日志写入缓冲区,然后再刷新到磁盘.该配置用于指定
日志缓冲区大小.过小,将使InnoDB频繁刷新日志到磁盘,同时难以支持长事务.过大浪费内存,同时延长刷新时间,增加日志丢失风险.
MYSQL体系结构-来自期刊的更多相关文章
- MySQL学习笔记-MySQL体系结构总览
MySQL体系结构总览 不管是用哪种数据库,了解数据库的体系结构都是极为重要的.MySQL体系结构主要由数据库和数据库实例构成. 数据库:物理操作系统文件或者其它文件的集合,在mysql中,数据库文件 ...
- 第四课(1)——MySQL体系结构
学习目标 一.MySQL体系结构 二.MySQL内存结构 三.MySQL文件结构 四.Innodb体系结构 MySQL体系结构 一.MySQL体系结构图 1.Mysql是由SQL接口,解析器,优化器, ...
- MySQL体系结构以及各种文件类型学习
1,mysql体系结构 由数据库和数据库实例组成,是单进场多线程架构. 数据库:物理操作系统文件或者其它文件的集合,在mysql中,数据库文件可以是frm.myd.myi.ibd等结尾的文件,当使用n ...
- MySQL 体系结构以及各种文件类型学习汇总 (转)
1,mysql体系结构 由数据库和数据库实例组成,是单进场多线程架构. 数据库:物理操作系统文件或者其它文件的集合,在mysql中,数据库文件可以是frm.myd.myi.ibd等结尾的文件,当使用n ...
- MySql基础入门-mysql体系结构
mysql体系结构: 由:连接池组件.管理服务和工具组件.sql接口组件.查询分析器组件.优化器组件. 缓冲组件.插件式存储引擎.物理文件组成. mysq ...
- mysql体系结构和sql查询执行过程简析
一: mysql体系结构 1)Connectors 不同语言与 SQL 的交互 2)Management Serveices & Utilities 系统管理和控制工具 备份和恢复的安全性,复 ...
- MySQL技术内幕读书笔记(一)——Mysql体系结构和存储引擎
目录 MySQL体系结构和存储引擎 定义数据库和实例 MYSQL体系结构 MYSQL存储引擎 MySQL体系结构和存储引擎 定义数据库和实例 数据库:物理操作系统文件或者其他形式文件类型的结合.在MY ...
- MySQL体系结构和存储引擎概述
MySQL体系结构和存储引擎概述 一.定义数据库和实例 数据库: 物理操作系统文件或其他形式文件类型的集合.数据库文件可以是frm.MYD.ibd 结尾的文件. 从概念上来说,数据库是文件的集合,是 ...
- MySQL笔记(1)---MySQL体系结构和存储引擎
1.前言 本系列记录MYSQL数据库的一些结构和实现特点,方便查询. 2.基本概念 数据库:物理操作系统文件或者其他形式文件类型的集合.MySQL中数据库文件可以是frm.MYD.MYI.ibd结尾的 ...
随机推荐
- Mysql隔离级别 sql示例理解
前言 事务要解决的是多线程并发修改数据库的问题.Mysql innodb 引擎支持事务.类似 Java 中的各种锁,例如乐观锁(CAS),读写锁,悲观锁.事务也有很多级别. 每个隔离级别要解决的问题都 ...
- codeforces315Div1 B Symmetric and Transitive
http://codeforces.com/contest/568/problem/B 题意就是给一个有n个元素的集合,现在需要求有多少个A的二元关系p,使得p是对称的,是传递的,但不是自反的. 首先 ...
- BAT 批处理脚本教程
第一章 批处理基础第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD.这些命令统称批处理命令.小知识:可以 ...
- linux非root用户执行开机启动程序
问题 开机启动其他用户的程序或者说非root用户执行开机启动 编写开机启动脚本 编写开机启动脚本apple_tree,放到/etc/init.d,系统启动时会自动执行. 例如,/etc/init.d/ ...
- php设计模式之职责链模式
<?php /** * @desc php设计模式之职责链模式(责任链模式) 定义:顾名思义,责任链模式为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这 ...
- Robomongo,Mongo可视化工具
哇唔,其实她是三(阴险脸). 你看你看,界面清新,让人家心旷神怡(害羞),谁还想win+R+mongo呀呀呀?! 哎呀呀,继续···说正事. 在这里···借助SQL进一步理解下MongoDB SQL术 ...
- 【python】break和continue
break:跳出循环 ,continue:停止当前循环,进入下一次循环,但为跳出循环. passwdList=["123","456"] valid = Fal ...
- C#操作VFP的dbf数据库文件实例
C#操作VFP的dbf数据库文件实例 新一篇: js获取网站跟路径 实例中分别使用Oledb和Odbc操作vfp数据库dbf文件,操作包括:读取,增删改. 已测试可直接使用,使用方法:下面代码分两个部 ...
- sql distinct 去除重复的字段
居然已经有人写了 那我就直接复制其链接吧
- thinkphp.2 thinkphp5微信支付 微信公众号支付 thinkphp 微信扫码支付 thinkphp 微信企业付款5
前面已经跑通了微信支付的流程,接下来吧微信支付和微信企业付款接入到thinkphp中,版本是3.2 把微信支付类.企业付款类整合到一起放到第三方类库,这里我把微信支付帮助类和企业付款类放到同一个文件了 ...