MySQL优化:数据库性能的影响因素分析(二)

来源:txd2016_5_11 发布时间:2018-11-24 09:50:16 阅读量:1199

        前边了解了对数据库性能影响较大的一些个因素以及大表、大事务对数据库性能所带来的影响,这里再来了解一下影响数据库性能的几个方面,分别为:服务器硬件、服务器所选择的操作系统、数据库存储引擎的选择(MySQL:插件式存储引擎)、数据库参数配置(影响的主力)、数据库结构设计和SQL语句。这里主要了解MySQL本身对性能的一些影响因素。


一、MySQL体系结构


        MySQL大致可以分为三层,分别为:客户端、MySQL服务层、存储引擎层。


        客户端:指可以通过各种协议连接到MySQL的客户端,如PHP、ODBC、JDBC等,大多数C/S架构的服务都是采用这种体系结构。在这一层主要完成的工作包括:连接处理、授权认证、安全等。每个连接到MySQL的客户端都会在服务器的进程中拥有一个线程,这个连接的查询只会 在这个单独的线程中进行执行。


        MySQL服务层:包括连接管理器、查询解析器、查询优化器、缓存、接口等,所有跨存储引擎的功能都是在这一层实现,这一层实现了MySQL所有与存储引擎无关的特性。


        MySQL存储引擎层:MySQL定义了一系列的存储引擎接口,实现这些接口,即可得到自定义的存储引擎。目前最常用的存储引擎包括:innodb、myisam、CSV、Memory、archive等。存储引擎是针对表而不是针对于库的,即同一个数据库下不同表可以采用不同的存储引擎。


二、存储引擎之MyISAM(create table XX表(column1、column2...columns) engine=myisam)


        1、MyISAM存储引擎的文件结构。


    MyISAM是MySQL在5.5以前版本的默认储存引擎。一般在系统表、临时表都默认采用MyISAM存储引擎(此处的临时表指的是在排序、分组等操作中、当数量超过一定的大小之后,有查询优化器建立的临时表)。

    MyISAM存储引擎会将表存储在两个系统文件中,一个为数据文件(以.MYD为扩展名),一个是索引文件(以.MYI为扩展名)。建立一个以MyISAM为存储引擎的表,将会产生三个文件,除了MyISAM引擎特有的两个文件(表名.MYD,表名.MYI)以外,还有一个以.frm文件为扩展名的文件(表名.frm),以.frm为扩展名的文件用于记录表的结构.

        2、MyISAM存储引擎的特性。


· 并发性与锁级别

    MyISAM使用的是表级锁而不是行级锁(对表中数据进行修改时需要对整个表进行加锁,而在对表中数据进行读取时也需要对所有的表加共享锁)。

· 表损坏修复

    MyISAM支持对由于任意意外关闭而损坏的MyISAM表进行检查和修复(非事务恢复)操作(check table tableName检查表,repair table tableName恢复表) 

· MyISAM表支持的索引类型

· MyISAM表支持数据压缩(myisampack命令,被压缩后的表“readOnly”)

 

        3、MyISAM存储引擎的限制。


· 默认表大小在5.0版本之前为4G,超过之后需要修改MAX_Rows和AVG_ROW_Length

  在5.0版本之后默认大小为256TB

        4、MyISAM的适用场景


· 非事务型应用(关系型数据库与NoSql数据库之间最大的区别)

· 只读类应用

· 空间类应用的数据,需用到空间函数进行计算的场景(MyISAM是唯一支持空间函数的引擎)

 

--------------------- 



标签: 数据库
分享:
评论:
你还没有登录,请先