mysql笔记

当key_cache_miss_rate(key_reads/key_read_requests*100%) 大于1%时需要增加 key_buffer_size (show global status like 'key_read')

对于MyISAM 需要注意table_cache的设置 当这个不够用时MYSQL会采用LRU算法踢掉最长时间没使用的表,过小时,会反复打开关闭造成性能损失。过大 会消耗很多CPU 可以参考opemed_tables参数的值 一直增长就适当增加值

对于InnoDB 需要重点注意 innodb_buffer_pool_size参数

从表中删除大量行后,可运行OPTIMIZE TABLE TableName进行碎片整理

理论上,当MYSQL单表数据到达1000万条之后不管怎么优化sql语句还是会对性能有影响 ORACLE则是2亿

show variables like '%partition%';查看是否支持分区

alter table 表名 add partition(paratition 分区名 values 条件) DROP删除
分区后不支持外键 ,一个表最多1024个分区,使用分区最好不要使用主键否则影响性能,使用分区可能会使索引失效

分表(垂直分表,水平分表)之后对查询、分页和统计会遇到问题 通用方法是在程序中进行处理辅助视图

创建视图,MYSQL的只是一个虚拟表,只包含定义而不含有任何数据。

可以用一个简单的视图查询来代替冗长的SQL如果是Oracle还可以在视图中存放真的数据加快查询速度。

性能优势在Mysql中不存在,但是在Oracle等商业数据库中,视图支持更多的特性。、

posted @ 2019-03-02 16:44  未入门的码农  阅读(276)  评论(1编辑  收藏  举报