mysql数据库优化

在做数据库优化的时候,很多小白都可能会说懵...

    我们选择Lamp环境的MySQL来举例
    首先定位慢语句

    a.修改mysql配置文件

       vim/etc/my.cnf

     在MySQLId里加入如下代码:

     log-slow-queries ="/tmp/mysql-slow.log“”   #此操作可以将所有的慢查询写在目录tmp下面的mysql-slow.log文件下

     long_query_time=1 (单位为秒,超过1秒代表慢查询语句)

 重启mysql:

             关闭:mysqldump -u root -p shutdown

  mysql启动:mysqld_safe -u mysql &

查看/tmp/mysql-slow.log

 vim/tmp/mysql-slow.log

 

      增删改优化:

1.Windows打开任务管理器 ctrl+alt+delete

2.linux top命令

3.如果cpu使用率或者内存占用率大的话,及时释放内存,

B。查看表的内容是不是太大:select count(*) from test   如果太大,可以考虑使用缓存

C。检查表的索引是不是很多:desc 表名 如果表索引很多,及时减少索引,因为索引的创建也会消耗资源的开销

D。mysql 主从服务器 读写分离

 

查询优化:

    a.缓存优化 :

             原则:数据读的多写的少的,类似于微博等,先读缓存,缓存没有的话,那么就读数据库,然后取出数据后放入缓存,同时返回响应,可以使用redis或者memcache。

 

索引的优化:

   索引的定义:索引就类似于字典目录可以快速访问数据表中的特定信息

   索引类型:

        a.主键索引:它是一种特殊的唯一索引,不允许空值

        b.唯一索引:与普通索引类似,不同的是:索引列的值必须唯一,但允许有空值

       c.普通索引:最基本的索引,没有任何限制

 

索引的创建:

 命令创建:

   <1 主键索引:

    键表时:create table test(id int primary key auto_increment,name char(30));

    建表后:alert table test add primary key id

  《2 唯一索引:

     建表时:create table test(id int primary key auto_increment,name char(30), unique name(name))

     建表后:alert table test add unique name(name)

3>.普通索引

    建表时:create table test(id int primary key  auto_increment, name char(30),index name(name))

    建表后;alert table test add index name(name)

 

索引删除

 主键索引:alert table test modify id int(10) 或 alert table test droup primary key 

非主键索引:alert table test drop 表名

索引的弊端:

    索引并非是绝对的好,索引的创建也是有资源开销的,比如磁盘空间的占用,并且索引还会影响增删改语句的执行效率

explain语句分析:

       示例“”explain select * from  user\G

    根据返回参数来判定是否需要加索引

       《1 row 查询次数

       《2 type 连接类型

         全表扫描

         explain select * from test   

   查询时一定不能出现all类型 全表扫描,速度是最慢的,如果在一个数据很多的数据表里分析sql语句的时候,返回类型出现index或者all ,那个时候必须加索引

3》key 搜素使用的索引

 

 

其它的优化小技巧:

1.尽量使用一条语句插入,避免循环插入

2.不要将图片存入到数据库中,用路劲代替

3.分组时添加group by id order by null 及时释放资源

4.尽量避免 * ,效率较低

5/使用or语句要注意,两侧的语句都有索引才能使用索引

6.针对myisam的表要定期执行命令 optimize table test 合并表空间碎片

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值