###第一部分:MySQL基础知识讲解
一、MySQL体系结构
客户端:JDBC、ODBS、MySQL客户端(如:Navicat);
MySQL服务层:连接管理器、查询缓存、查询解析器、查询优化器;
存储引擎层:MyISAM、InnoDB、其他(Memory、CSV)
二、MySQL存储引擎
InnoDB特性:
MySQL5.5.8之后默认的存储引擎,具备事务,目前绝大部分应用场景都会使用InnoDB
采用“表空间”保存文件,默认使用行级锁
锁的分类 (指责划分:共享锁(读锁)、独占锁(写锁);粒度划分:行级锁、表级锁)
在InnoDB总是有利用索引的更新、删除操作才可以使用行级锁,不能使用索引的写操作则会是表锁
MyISAM特性:
不支持事务、支持全文检索支持text、支持前缀索引
支持数据压缩,紧密存储、顺序读性能很好
级锁、混合读写性能不佳、并发性差
使用场景:非事务应用,例如:保存日志;只读类应用,例如:报表数据、字典数据;空间类应用,例如:开发GIS系统(5.7版本之前);系统临时表,例如:SQL查询、分组的临时表引擎
Memory特性:
不支持事务
内存读写,临时存储(重启后数据丢失)
超高的读写效率,比MyISAM高一个量级
表级锁、性能查询(适合读多、写少的场景)
使用场景:读多写少的静态数据,例如省市区县数据;充当缓存使用,保存高频访问静态数据;系统临时表
CSV特性:
纯文本保存;不支持事务;不支持索引
使用场景:数据交换/数据迁移(MySQL迁移到其他数据库);不依赖MySQL环境
三、影响数据库性能的因素:
数据库结构设计
数据库的存储引擎(MyISAM、InnoDB、Memory、CVS)
SQL语句的书写
数据库参数配置
服务器操作系统与硬件