Mysql的优化2018-05-24

mysql优化的三个方向
  • 1.linux内核的优化,一般交给运维做
  • 2.改mysql的配置文件,配置参数优化,此优化需要进行压力测试来进行参数调整.
    慢查询:默认关闭,会记录每一条sql语句的执行时间,可以考虑对超过2秒的语句进行优化.
  • 3.sql语句及表优化,下面讲的16条就是

    一:查询缓存优化你的查询,大多数mysql服务器都开启了查询缓存,这是最有效的方法之一,当有很多的查询语句执行多次的时候,这些查询结果会被放到一个缓存中.
    image.png

    所以写sql的时候尽量不要写函数.

    二. EXPLAIN你的SELECT查询,
    三.当只要一行数据的时候,使用LIMIT1.可以大幅度提升效率
    四.为搜索字段建索引


    image.png

    如果对某些字段用的特别特别多,就用第三方搜索服务器,elasticsearch等
    五.

七.避免用select * (重点!!!)
以前公司里的都是用的select *,特别慢,后来我把不需要取所有结果集数据改成取某些字段,速度大幅度提升


image.png

其实hibernate查所有字段效率也和查 *一样差
150W条数据的单表,备份出来大概是60M-100M大小
八.永远为每张表设置一个主键

九,使用ENUM(枚举,即二选一最多是0.1.2三个数字
)而不是VARCHAR

十.尽量使用NOT_NULL,因为null实际上更大

十一.虽然不指定长度也会自动扩容,但是指定长度效率更高,varchar指定长度

十二.垂直分割,即从表的左右的中间开始分开,做成两张表,例如博客,新闻中,标题为左边表,点进去查看详情再链接右边的表

十三.拆分打的DELETE或INSERT

十四.越小的列查的越快,查的越少越快

十五.选择正确的存储引擎,


image.png

十六.小心永久链接,mysql8小时,oracle永久开着.

十七.水平切分,不是中间一刀切,是有算法的.


image.png

image.png

路由算法可以均匀的把数据存到各个库中,mycat中用到


image.png

有空再来整理...

你可能感兴趣的:(Mysql的优化2018-05-24)