|
Mysql是用一系列的默认设置预先设置的,从这些设置开始是很好的.但经过一段时间后你可能需要调整内存分配\缓存区大小等.(为查看当前设置,可使用show variables;和show status)
Mysql是一个多用户多线程的dbms.换言之,它经常同时执行多个任务.如果这些任务中的某个任务执行缓慢,则所有请求都会执行缓慢.如果你遇到性能的显著不良,可使用show processlist显示所有活动进程(以及他们的线程id和执行时间).你还可以用kill命令终结某个特定的进程.
总是有不止一种方法编写同一条select语句.应试验联结,并,子查询等,找出最佳方法.
使用explain语句让mysql解释它将如何执行一条select语句.
一般来说,存储过程执行的比一条一条的执行其中的各条mysql语句快.
应该总是正确的使用数据类型.
决不要检索比需求还要多的数据.换言之,不要用select *(除非你真正需要每一个列)
有的操作包括insert支持一个可选的delayed关键字,如果使用它,将把控制立即返回给调用程序,并且一旦有可能就实际执行该操作.
在导入数据之前,应该关闭自动提交.你可能还想删除索引(包括fulltext索引),然后在导入完成后再重建他们.
必须索引数据库表已改善数据检索的功能.确定索引什么不是一件微不足道的事情,需要分析使用select语句以找出重复的where和ordery by子句.如果一个简单的的where子句返回结果所花的时间太长,则可以断定其中使用的列就是需要索引的对象.
你的select语句中有一系列重复的or条件吗 通过使用多条select 语句和连接他们的union语句,你能看到极大的性能改进.
索引改善数据检索的的性能,但损害数据插入删除和更新的性能.如果你有一些表,他们收集数据且不经常被检索,则在有必要之前不要索引他们.(索引可根据需要添加和删除.)
Like很慢.一般来说,最好使用fulltext而不是like.
数据库是不断变化的实体.一组优化良好的表一会儿后可能就面目全非了.由于表的使用和内容的更改,理想的优化和配置也会改变.
最重要的规则就是,每条规则在某些条件上都会被打破. |
|
|