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

        前边了解了对数据库性能影响较大的一些个因素以及大表、大事务对数据库性能所带来的影响,这里再来了解一下影响数据库性能的几个方面,分别为:服务器硬件、服务器所选择的操作系统、数据库存储引擎的选择(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是唯一支持空间函数的引擎)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值