InnoDB存储引擎

InnoDB存储引擎

InnoDB是事务安全的MySQL存储引擎,设计上采用了类似于oracle数据库的架构.通常来说,InnoDB存储引擎是OLTP应用中核心表的首选存储引擎

InnoDB简介

概述

第一个完整支持ACID事务的MySQL存储引擎,特点是行锁设计,支持MVCC,支持外键,提供一致性非稳定读,同时被设计用来最有效的利用以及使用内存的CPU.

体系架构

主要工作:

维护所有进程/线程需要访问的多个内部数据结构

缓存磁盘上的数据,方便快速地读取,同时在堆磁盘文件的数据修改之前在这里缓存

重做日志缓冲

后台线程主要作用是负责刷新内存池中的数据,保证缓冲池中的内存缓存的是最近的数据.此外将已修改的数据文件刷新到次哦按文件,同时保证在数据库发生异常的情况下InnoDB能恢复到正常运行状态

后台线程

master thread

一个非常核心的后台线程,主要负责将缓冲池中的数据异步刷新到磁盘,保证数据一致性,包括脏页的刷新,合并插入缓冲,UNDD页的回收

IO thread

负责IO请求的回调

purge thread

事务被提交后,其所使用的UNdolog可能不再需要,因你那次需要purge thread来回收已经使用并分配的undo页

内存

缓冲池

一块内存区域,通过内存的速度来弥补磁盘速度较慢对数据库性能的影响.缓冲池的大小直接影响着数据库的整体性能

文件

参数文件

MySQL实例可以不需要参数文件,以文本方式进行存储的,分为动态参数和静态参数

日志文件

记录MySQL数据库的各种类型活动,常见的有:错误日志,二进制日志,慢查询日志,查询日志

错误日志

对MySQL 的启动,运行,关闭过程进行了记录

慢查询日志

可帮助DBA定位可能存在问题的SQL语句,从而进行SQL语句层面的优化,可以设置阈值

查询日志

记录了所有对MySQL数据库请求的信息,无论这些其你去是否得到了正确的执行

二进制日志

记录了对MySQL数据库执行更改的所有操作,但是不包括select和show这类操作

索引组织表

根据主键顺序组织存放的,若创建表时没有创建主键,则InnoDB引擎会自动判断并创建主键.

_rowid可以用于查看单个列为主键的情况,对也多列组成的主键无能为力

InnoDB逻辑存储结构

所有数据被逻辑地存放在表空间中,表空间由段,区,页组成

索引与算法

索引是应用程序设计和开发的一个重要方面,但是索引太多,对程序性能可能会受到影响,索引太少,对查询性能又会长生影响,故需要找到一个平衡点,这对程序应能至关重要.

InnoDB存储引擎索引概述

B+数索引:目前关系型数据库中查找最为常用和最为有效的索引,类似于二叉树,根据键值对快速找到数据,B+树不是一个二叉树,该索引你能找到的是被查找数据行所在的页,然后通过页读入到内存你,再在内存中查找,最后得到要查找的数据

全文索引

哈希索引:InnoDB引擎支持的哈希索引是自适应的,它会根据表的使用情况自动为表生成哈希索引

锁是数据库系统区别于文件系统的一个关键特性.锁机制用于管理对共享资源的并发访问.

InnoDB引擎中的锁分为共享锁和排他锁

性能调优

选择合适的CPU

InnoDB引擎一般都应用于OLTP的数据库应用,这种应用特点:永华操作的并发量大;事务处理的时间比较短;查询的语句较为简单,一般都走索引;复杂的查询较少;

OLAP是CPU密集型操作,OLTP是IO密集型操作

内存的重要性

内存的大小是最能直接反映数据库的性能.

硬盘对数据库性能的影响

固态硬盘和传统硬盘

合理设置RAID

基本思想:把多个相对便宜的硬盘组合起来,成为一个磁盘数组,使其性能达到甚至产国一个价格昂贵,容量巨大的硬盘

作用:增强数据集成度;增强容错功能;增加处理量和容量

操作系统的选择

Linux是MySQL数据库服务器中最常用的操作系统.

Windows操作系统在MySQL数据库应用中也非常普及.

选择合适的基准测试工具

sysbench

测试方式:CPU性能;磁盘IO性能;调度程序性能;内存分配及传输速度;POSIX线程性能;数据库OLTP基准测试

 

posted @ 2020-06-22 11:36  数据阮小白  阅读(154)  评论(0编辑  收藏  举报