17 mysql-框架、存储引擎

1 框架

架构图如下:

 

连接驱动:每当一个客户端连接MySQL服务器的时候,服务器都会执行认证。认证基于用户名,客户端主机和客户端用户密码。客户端连上MySQL服务器以后,服务器会检查客户端是否有权限发起特定的请求。

缓存:查询缓存保存了SELECT语句的完整结果集。在解析查询之前,MySQL服务器先找查询缓存。如果客户端发起的查询与缓存中的完全一致,服务器就简单地跳过解析、优化甚至执行,它直接就从缓存中把输出显示出来。相关参数配置如下:

query_cache_type: 是否打开缓存 ,OFF关闭;ON打开;DEMAND明确写了SQL_CACHE的查询才会缓存

query_cache_size: 缓存使用的总内存空间大小,单位是字节,这个值必须是1024的整数倍。

query_cache_min_res_unit: 分配内存块时的最小单位大小

query_cache_limit: MySQL能够缓存的最大结果,如果超出,则增加 Qcache_not_cached的值,并删除查询结果

query_cache_wlock_invalidate: 如果某个数据表被锁住,是否仍然从缓存中返回数据,默认是OFF,表示仍然可以返回

解析器:sql请求发送到server端,需要经过解析器生成内部的数据结构对象,以方便进行优化和生成执行计划

优化器:创建了内部解析树之后,MySQL运用了多种优化技术。这些技术可能包括,查询重写,扫描表的顺序以及选择合适的索引

2 存储引擎

InnoDB和MyISAM是最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持以及外部键等高级数据库功能。

2.1 MyISAM

优点:

插入速度快

使用B tree索引

支持FUULTEXT全文索引

count(*)的速度很快

磁盘空间占用较少

缺点:

不支持事务

不支持外键

表级别锁定

有持久性问题,表崩溃可能需要冗长的修复操作才能使其回复联机

2.2 InnoDB

优点:

支持事务

全ACID支持(原子性,一致性,隔离性,持久性)

支持MVCC,多版本并发控制

行级锁,并发写入同一表的不同行不会被序列化

支持外键

主键支持使用集群索引

提高了应用程序在高负载,大量连接下的并发能力

缺点:

InnoDB对磁盘空间的使用是MyISAM的3倍以上

count(*)的速度大大降低

一些简单查询表单的速度低于MyISAM,但是复杂的,多个表的查询速度则超过MyISAM

猜你喜欢

转载自www.cnblogs.com/lizhuxin/p/10745332.html
17