MySQL的逻辑架构说起:
成都创新互联是创新、创意、研发型一体的综合型网站建设公司,自成立以来公司不断探索创新,始终坚持为客户提供满意周到的服务,在本地打下了良好的口碑,在过去的10余年时间我们累计服务了上千家以及全国政企客户,如护栏打桩机等企业单位,完善的项目管理流程,严格把控项目进度与质量监控加上过硬的技术实力获得客户的一致称誉。
最上面一层是客户端的连接服务,主要完成客户端的连接处理,授权认证。在该层有一个线程池,每一个连接从线程池中获取线程,省去了创建和销毁线程的开销。
中间这一层可以完成查询解析,分析,优化,缓存。存储过程,触发器,视图也是在这一层。
最下面一层是存储引擎,负责mysql中数据的存储和提取。
和其它数据库有所不同,mysql的存储引擎是可插拔的,可以根据不同的场合使用不同的存储引擎。
存储引擎:
存储引擎就是存储数据,更新查询数据,建立索引等等的技术实现方式,mysql5.0支持的存储引擎包括: InnoDB、MyISAM、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中使用最多的是InnoDB和MyISAM,mysql5.5之后InnoDB是默认的存储引擎我们重点讨论这两个存储引擎
查看mysql默认存储引擎的命令:
show variables like '%storage_engine%'
InnoDB存储引擎和MyISAM的对比图:
InnoDB存储引擎和MyISAM存储引擎的最大区别有以下三点:
1. InnoDB支持事物,MyISAM不支持
2. InnoDB支持外键,MyISAM不支持
3. 批量插入的速度MyISAM要高于InnoDB
基于以上特点来看看在实际使用中应该如何选择存储引擎:
InnoDB存储引擎:因为InnoDB存储引擎支持事物,所以对于要求事物完整性的场合需要选择InnoDB,比如数据操作除了插入和查询以外还包含有很多更新删除操作,像财务系统等对数据准确性要求较高的系统。
MyISAM存储引擎:如果系统是以读操作和插入操作为主,只有很少的更新删除操作,并且对事物的之处没有要求那么可以选择这个存储引擎。