mysql的优化
Posted 无痕
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql的优化相关的知识,希望对你有一定的参考价值。
mysql的优化:
1>查询缓存优化sql
大多数的MySql数据库服务器都开启了缓存查询,这是提高sql性能的最有效方法之一,缓存查询是由mysql数据库引擎处理的。当有很多相同查询被执行了多次时,这些查询结果会被放在一个缓存中,这样后续相同sql的查询就不用访问表了,直接从缓存中取即可。
所以sql中尽量要避免写如函数,例如:Now(),Rand()等,因为使用函数不会是服务器开启缓存功能,要尽量写一些固定的变量做where条件。
2>使用Explain关键字
在sql查询中用运Explain关键字能够看到rows列,让你了解sql查询的状态,能够发现sql执行中的瓶颈所在,在哪里出现了问题,然后正对问题进行解决。
3>学会使用limit 1
当用sql查询的时候,想知道是否有这样的条件的数据存在,这是用limit 1 ,sql搜索引擎会在找到一条符合的几率就会停止,很显然能够有效的提高检索的效率。
4>为搜索的字段添加索引
为搜索的字段添加索引也是一个提高检索效率的很有效的方法之一,
alter table [表名] add index [字段名](mysql添加索引的方法)
5>尽量避免使用Order By Rand() 方法
使用这个方法会很严重的消耗cpu的执行时间,因为这样会使每一行都去执行rand() 方法,并且去标记他们的行号。6>避免使用Select *
每个是数据应该都是,查找的字段越多 则执行的会越慢,所以我们要经可能的取,用到那些字段就取检索哪些字段。
7>要为每一张表都设置一个id
该id最好int类型,设置成自增(auto_increment),让id作为主键,在查询中会用到的,很方便。
8>当表中某些字段的值是固定的尽量使用enum类型,避免varchar类型,
因为enum类型是非常快和紧凑的,这样会节省空间,同时sql当查询这种类型的字段的时候也是很快的
9>尽可能的使用NOT NULL
因为在数据库中null也是需要占一定空间的,而且在比较的时候内部的计算是很复杂的,所以要尽量避免是用null
10>固定长度的表会更快,尽量将比较大的表进行垂直分割
将字段长度固定的放到一个表里边,然后用外键与他们相关联,会提高查询的速度
11>尽量拆分比较大的delete和insert语句
如果你需要在一个在线的网站上去执行一个大的DELETE或INSERT查询,一定要非常小心,要避免你的操作让你的整个网站停止相应。因为这两个操作是会锁表的,表一锁住了,别的操作都进不来了。
Apache会有很多的子进程或线程。所以,其工作起来相当有效率,而我们的服务器也不希望有太多的子进程,线程和数据库链接,这是极大的占服务器资源的事情,尤其是内存。
如果你把你的表锁上一段时间,比如30秒钟,那么对于一个有很高访问量的站点来说,这30秒所积累的访问进程/线程,数据库链接,打开的文件数,可能不仅仅会让你泊WEB服务Crash,还可能会让你的整台服务器可能就会挂掉。
所以,当有一个大的处理,一定把其拆分,使用LIMIT条件是一个好的方法。并且每执行一次睡眠几秒钟,然后接着执行。
后期还会又追加。。。,共同学习
以上是关于mysql的优化的主要内容,如果未能解决你的问题,请参考以下文章