mysql优化的三个方向
- 1.linux内核的优化,一般交给运维做
- 2.改mysql的配置文件,配置参数优化,此优化需要进行压力测试来进行参数调整.
慢查询:默认关闭,会记录每一条sql语句的执行时间,可以考虑对超过2秒的语句进行优化. -
3.sql语句及表优化,下面讲的16条就是
一:查询缓存优化你的查询,大多数mysql服务器都开启了查询缓存,这是最有效的方法之一,当有很多的查询语句执行多次的时候,这些查询结果会被放到一个缓存中.
所以写sql的时候尽量不要写函数.
二. EXPLAIN你的SELECT查询,
三.当只要一行数据的时候,使用LIMIT1.可以大幅度提升效率
四.为搜索字段建索引
如果对某些字段用的特别特别多,就用第三方搜索服务器,elasticsearch等
五.
七.避免用select * (重点!!!)
以前公司里的都是用的select *,特别慢,后来我把不需要取所有结果集数据改成取某些字段,速度大幅度提升
其实hibernate查所有字段效率也和查 *一样差
150W条数据的单表,备份出来大概是60M-100M大小
八.永远为每张表设置一个主键
九,使用ENUM(枚举,即二选一最多是0.1.2三个数字
)而不是VARCHAR
十.尽量使用NOT_NULL,因为null实际上更大
十一.虽然不指定长度也会自动扩容,但是指定长度效率更高,varchar指定长度
十二.垂直分割,即从表的左右的中间开始分开,做成两张表,例如博客,新闻中,标题为左边表,点进去查看详情再链接右边的表
十三.拆分打的DELETE或INSERT
十四.越小的列查的越快,查的越少越快
十五.选择正确的存储引擎,
十六.小心永久链接,mysql8小时,oracle永久开着.
十七.水平切分,不是中间一刀切,是有算法的.
路由算法可以均匀的把数据存到各个库中,mycat中用到
有空再来整理...