Mysql在互联网企业中应用很是普遍,互联网企业的特色访问量很是大,怎么样优化mysql就成了摆在咱们面前的一道难题。mysql
咱们从mysql的逻辑架构提及:sql
最上面一层是客户端的链接服务,主要完成客户端的链接处理,受权认证。在该层有一个线程池,每个链接从线程池中获取线程,省去了建立和销毁线程的开销。数据库
中间这一层能够完成查询解析,分析,优化,缓存。存储过程,触发器,视图也是在这一层。缓存
最下面一层是存储引擎,负责mysql中数据的存储和提取。架构
和其它数据库有所不一样,mysql的存储引擎是可插拔的,能够根据不一样的场合使用不一样的存储引擎。ide
存储引擎:优化
存储引擎就是存储数据,更新查询数据,创建索引等等的技术实现方式,mysql5.0支持的存储引擎包括: InnoDB 、MyISAM 、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中使用最多的是InnoDB 和MyISAM,mysql5.5以后InnoDB是默认的存储引擎咱们重点讨论这两个存储引擎spa
查看mysql默认存储引擎的命令:线程
show variables like '%storage_engine%'索引
InnoDB存储引擎和MyISAM的对比图:
InnoDB存储引擎和MyISAM存储引擎的最大区别有如下三点:
1. InnoDB支持事物,MyISAM不支持
2. InnoDB支持外键,MyISAM不支持
3. 批量插入的速度MyISAM要高于InnoDB
基于以上特色来看看在实际使用中应该如何选择存储引擎:
InnoDB存储引擎:由于InnoDB存储引擎支持事物,因此对于要求事物完整性的场合须要选择InnoDB,好比数据操做除了插入和查询之外还包含有不少更新删除操做,像财务系统等对数据准确性要求较高的系统。
MyISAM存储引擎:若是系统是以读操做和插入操做为主,只有不多的更新删除操做,而且对事物的之处没有要求那么能够选择这个存储引擎。