Mysql性能

影响Mysql性能的几大因素

  • 硬件条件
  • 操作系统
  • 存储引擎选择
  • 数据库参数配置
  • 数据库表结构设计和SQL语句

Mysql体系结构

在这里插入图片描述


Mysql存储引擎

  • MyISAM存储引擎:没有事务,外键,访问速度快,对表增删改操作不多的时候建议使用。(数据安全性不高)

  • InnoDB存储引擎:Mysql5.5之后的默认引擎,使用最多,支持事务,列的自增,支持外键。(数据写入效率不高)

  • MEMORY存储引擎:内存中建表,服务关闭数据消失,读写速度非常的快,默认使用HASH索引。

  • MERGE存储引擎:Merge引擎将一定数量的MyISAM表联合而成一个整体,且这些MyISAM表结构必须完全相同。如对每个月的日志表整合,用于生成一年的报表。

  • CSV:以CSV格式进行存储,所有列必须都是不能为空,不支持索引,不适合大表,不适合在线处理,可以对数据文件直接编辑

  • ARCHIVE :不支持索引,查询效率低,数据压缩比非常高,大概只有InnoDB的1/10-15,插入快,多用于数据归档

  • PERFORMANCE_SCHEMA :主要用于收集数据库性能参数。提供进程等待的详细信息,包括锁、互斥变量、文件信息;保存历史的事件汇总信息,为提供MySQL服务器性能做出详细的判断;对于新增和删除监控事件点都非常容易,并可以随意改变mysql服务器的监控周期

  • BLACKHOLE(黑洞引擎) :该存储引擎支持事务,而且支持mvcc的行级锁,写入这种引擎表中的任何数据都会消失,主要用于做日志记录或同步归档的中继存储,这个存储引擎除非有特别目的,否则不适合使用。

MySql索引类型
在这里插入图片描述
Mysql目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE。

  • FULLTEXT
    即为全文索引,目前只有MyISAM引擎支持。其可以在CREATE TABLE ,ALTER TABLE ,CREATE INDEX 使用,不过目前只有 CHAR、VARCHAR ,TEXT 列上可以创建全文索引。

    全文索引并不是和MyISAM一起诞生的,它的出现是为了解决WHERE name LIKE “%word%"这类针对文本的模糊查询效率较低的问题。

  • HASH

    由于HASH的唯一(几乎100%的唯一)及类似键值对的形式,很适合作为索引。

    HASH索引可以一次定位,不需要像树形索引那样逐层查找,因此具有极高的效率。但是,这种高效是有条件的,即只在“=”和“in”条件下高效,对于范围查询、排序及组合索引仍然效率不高。

  • BTREE
    BTREE索引就是一种将索引值按一定的算法,存入一个树形的数据结构中(二叉树),每次查询都是从树的入口root开始,依次遍历node,获取leaf。这是MySQL里默认和最常用的索引类型。

  • RTREE
    RTREE在MySQL很少使用,仅支持geometry数据类型,支持该类型的存储引擎只有MyISAM、BDb、InnoDb、NDb、Archive几种。

数据库参数设置
思路:其实参数配置无非就是从,连接数,连接时间,闲置时间,和缓存等方面来进行优化,参数配置的前提条件要和我们服务器配置相匹配,好比你开着兰博基尼去跑山上的泥巴路?
参考:MySQL性能优化之参数配置

数据库表结构设计和SQL语句

  • 使用查询缓存优化查询
  • 使用EXPLAIN关键字检测查询
  • 当只要一行数据时使用LIMIT 1
  • 为搜索字段建立索引
  • 在join表的时候使用相当类型的列,并将其索引
  • 切记不要使用ORDER BY RAND()
  • 避免使用SELECT *
  • 永远为每张表设置一个ID主键
  • 使用ENUM而不是VARCHAR
  • 尽可能的不要赋值为NULL
  • 固定长度的表会更快
  • 垂直分割
  • 拆分大的DELETE或INSERT
  • 越小的列会越快
  • 选择正确的存储引擎
  • 小心永久链接
    参考:https://blog.csdn.net/u013087513/article/details/77899412
发布了11 篇原创文章 · 获赞 19 · 访问量 3830
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览