mysql 性能优化推荐书籍?
1.《高性能MySQL》
noDB存储引擎》
noDBnoDB的架构、索引、事务、锁等方面的知识,并且给出了大量的实例和性能测试结果,非常适合MySQL的进阶者。
3.《MySQL性能调优与架构设计》
4.《MySQL技术内幕:SQL优化》
mysqlinnodbcount(distinct)很慢,怎么优化?
1. 把你的day字段类型改为long型,在页面显示的时候在格式化成自己需要的样式;
2. 在day字段上建立索引;
3. 把ip_4表类型有InnoDB改为MyISAM,如果不需要事物支持的话,建议不要使用InnoDB。
mysql如何定期分析检查与优化表?
1. 对表进行优化 ( 优化表主要作用是消除删除或者更新造成的空间浪费)
2. 对表进行分析(分析关键字的分布, 分析并存储MyISAM和BDB表中键的分布)
图片来源:网络
3. 对表进行检查(检查表的错误,并且为MyISAM更新键的统计内容)
4. 对表进行修复(修复被破坏的MyISAM表)
分析表
ANALYZE TABLE 表名1 [,表名2…] ;
ANALYZE TABLE分析表的过程中,数据库系统会对表加一个只读锁。在分析期间,只能读取表中的记录,不能更新和插入记录。ANALYZE TABLE语句能够分析InnoDB和MyISAM类型的表。
对表的定期分析可以改善性能,且应该成为常规维护工作的一部分。因为通过更新表的索引信息对表进行分析,可改善数据库性能。
检查表
MySQL中使用CHECK TABLE语句来检查表。CHECK TABLE语句能够检查InnoDB和MyISAM类型的表是否存在错误。还可以检查视图是否存在错误.
check table 表名
优化表
随着MySQL的使用,包括BLOB和VARCHAR字节的表将变得比较繁冗,因为这些字段长度不同,对记录进行插入、更新或删除时,会占有不同大小的空间,记录就会变成碎片,且留下空闲的空间。像具有碎片的磁盘,会降低性能,需要整理,因此要优化。 (个人理解:当删除数据之后,原来的索引文件位置会空出来。等待新文件的插入,optimize命令就是整理索引文件)
针对MyISAM表,直接使用如下命令进行优化
optimize table table1[,table2][,table3]
myisam
innodb
Table does not support optimize, doing recreate + analyze instead。因为Innodb结构下删除了大量的行,此时索引会重组并且会释放相应的空间因此不必优化。
show table status like ‘表名’;
mysql的优化方法,如何更快的把数据返回给用户?
不想大的改动的话,可以在经常出现在查询条件的字段上建立索引,也可以按天分表。如果关联表查询比较多,可以创建视图,客户查询时直接查询时图即可。
如果数据量不大,程序和sql写的没有问题以上方案应该可以有一个比较好的体验。