加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MYSQL数据库mysql innodb数据库引擎解析

发布时间:2020-12-24 08:18:48 所属栏目:MySql教程 来源:网络整理
导读:副标题#e# 《MYSQL数据库mysql innodb数据库引擎解析》要点: 本文介绍了MYSQL数据库mysql innodb数据库引擎解析,希望对您有用。如果有疑问,可以联系我们。 导读:本节内容:mysql innodb数据库引擎一.mysql体系结构和存储引擎1.1、数据库和实例的区别数
副标题[/!--empirenews.page--]

《MYSQL数据库mysql innodb数据库引擎解析》要点:
本文介绍了MYSQL数据库mysql innodb数据库引擎解析,希望对您有用。如果有疑问,可以联系我们。

导读:本节内容:mysql innodb数据库引擎一.mysql体系结构和存储引擎1.1、数据库和实例的区别数据库:物理操作系统或其他形式文件类型的集合....

MYSQL实例本节内容:
mysql innodb数据库引擎

MYSQL实例一.mysql体系结构和存储引擎

MYSQL实例1.1、数据库和实例的区别

MYSQL实例数据库:物理操作系统或其他形式文件类型的集合.在mysql下数据库文件可以是frm,myd,myi,ibd结尾的文件.

MYSQL实例数据库实例:由数据库后台进程/线程以及一个共享内存区组成.数据库实例才是真正用来操作数据库文件的.

MYSQL实例mysql数据库是单进程多线程的程序,与sql server比较类似.也就是说,Mysql数据库实例在系统上的表现就是一个进程.

MYSQL实例1.2、mysql的体系结构

MYSQL数据库mysql innodb数据库引擎解析

MYSQL实例mysql由连接池组件、管理服务和工具组件、sql接口组建、查询分析器组件、优化器组件、缓存组件、插件是存储引擎、物理文件.

MYSQL实例1.3、mysql存储引擎

MYSQL实例1.3.1、innodb存储引擎,特点支持外键、行锁、非锁定读(默认情况下读取不会产生锁)、mysql-4.1开始支持每个innodb引擎的表单独放到一个表空间里.innodb通过使用MVCC来获取高并发性,并且实现sql标准的4种隔离级别,同时使用一种被称成next-key locking的策略来避免换读(phantom)现象.除此之外innodb引擎还提供了插入缓存(insert buffer)、二次写(double write)、自适应哈西索引(adaptive hash index)、预读(read ahead)等高性能技术.

MYSQL实例1.3.2、myisam存储引擎,myisam特点是不支持事物,适合olap应用,myisam表由MYD和MYI组成.mysql-5.0版本之前,myisam默认支持的表大小为4G,从mysql-5.0以后,myisam默认支持256T的表单数据.myisam只缓存索引数据.

MYSQL实例1.3.3、NDB存储引擎,特点是数据放在内存中,mysql-5.1版本开始可以将非索引数据放到磁盘上.NDB之前的缺陷是join查询是mysql数据库层完成的,而不是存储引擎完成的,复杂的join查询需要巨大的网络开销,速度很慢.当前mysql cluster7.2版本中已经解决此问题,join查询效率提高了70倍.

MYSQL实例1.3.4、memeory存储引擎,将数据放到内存中,默认使用hash索引,不支持text和blob类型,varchara是按照char的方式来存储的.mysql数据库使用memory存储引擎作为临时表还存储中间结果集(intermediate result),如果中间集结果大于memorg表的容量设置,又或者中间结果集包含text和blog列类型字段,则mysql会把他们转换到myisam存储引擎表而放到磁盘上,会对查询产生性能影响.

MYSQL实例1.3.5、archive存储引擎,压缩能力较强,主要用于归档存储.

MYSQL实例1.3.6、federated存储引擎,不存储数据,他指向一台远程mysql数据库上的表.

MYSQL实例1.3.7、maria存储引擎,myisam的后续版本,支持缓存数据和索引,行锁设计,支持mvcc,支持事务和非事务安全的选项,以及更好的BLOG字符类型的处理性能.

MYSQL实例1.3.8、其他存储引擎,sphinx用于全文索引,infobright用于数据仓库.

MYSQL实例1.4连接Mysql

MYSQL实例1.4.1、TCP/IP:基于网络的连接,连接进行权限检查.

MYSQL实例1.4.2、命名管道和共享内存:Windows系统上同一服务器上的两进程可通过命名管道连接,需在配置文件中启用--enable-named-pipe选项.

MYSQL实例1.4.3、Unix套接字:客户端与服务端位于同一服务器时才可使用,可以在my.cnf中指定-socket=/tmp/mysql.sock,连接时指定./mysql -S/tmp/mysql.sock.

MYSQL实例二.InnoDB存储引擎

MYSQL实例2.2、innodb引擎架构
www.jbxue.com
InnoDB的多个内存块组成了内存池,负责如下工作:

MYSQL实例1).维护所有进程/线程需要访问的多个内部数据结构.

MYSQL实例2).缓存磁盘上的数据,方便快速的读取,并且在对磁盘文件的数据进行修改之前在这里缓存.

MYSQL实例3).重做日志缓存.

MYSQL实例后台线程的主要作用是负责刷新内存池中的数据,保证缓冲池中的内存缓存是最近的数据,此外、将已经修改的数据文件刷新到磁盘文件

MYSQL实例2.2.1、后台线程

MYSQL实例innodb存储引擎后台有7个线程,—–4个IO线程(insert buffer thread,log thread,read thread,write thread),1个master thread,一个lock监控线程,一个错误监控线程.

MYSQL实例2.2.2、内存

MYSQL实例innodb存储引擎内存由以下三个部分组成:缓冲池(buffer pool),重做日志缓存(redo log buffer),额外的内存池(additional memory pool).可以使用 show engine innodb status来查看innodb_buffer_pool的使用情况.

MYSQL实例innodb_buffer_pool_size:具体看,缓冲池中的数据库类型有:索引页、数据库页、undo页、插入缓存页(insert buffer)、自适应hash(adaptive hashindex)、innodb存储的锁信息(lock info)、数据字典信息(data dictionary).

MYSQL实例InnoDB工作方式:将数据文件按页(每页16K)读入InnoDBbuffer pool,然后按最近最少使用算法(LRU)保留缓存数据,最后通过一定频率将脏页刷新到文件.

MYSQL实例

MYSQL数据库mysql innodb数据库引擎解析

MYSQL实例
2.3、master thread

MYSQL实例2.3.1、master thread源码分析
">

MYSQL数据库mysql innodb数据库引擎解析

MYSQL实例2.3.2、master thread的潜在问题

MYSQL实例1、由于硬件的发展,现在的硬件性能已经提高了很多,如果innodb每秒最大刷新100个脏页,那么效率会很低,为了解决这个问题,innodb plugin提供了一个参数innodb_io_capacity,用来表示磁盘IO的吞吐量,默认值是200,规则如下:在合并插入缓存时,合并插入缓存的数量为innodb_io_capacity的5%;在从缓冲区刷新脏页时,啥新脏页的数量为innodb_io_capacity.

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读