Mysql 优化总结

在研究mysql优化之前首先要了解mysql语句的分类供四类:
1,DDL 操作数据库表结构,
2,DML 操作数据行的增删改,
3,DQL 查询语句,其执行顺序是
1,执行from
2,执行where
3,是group by 和 having,
4,select,
5,是order by,
6,是limit。
所以在where中不能使用字段的别名,但是在order by中就可以。

4,DCL 权限控制语句,谁能够访问数据库,能访问那些数据。

4.1,查询用户,
USE mysql;select * from user;
host: 主机地址。在哪个主机上可以访问;
User:用户。
4.2,创建用户
create user 'user1'@'localhost' identified by '123456'; # 创建密码是123456的user1,只能本地访问。
create user 'user2'@'%' identified by '123456'; #任何主机都可以访问。

4.3,修改用户密码
alter user 'user1'@'localhost' identified with mysql_native_password by '1234';

4.4,删除用户
drop user 'user1'@'local';

4.5 权限控制 权限列表
ALL SELECT INSERT UPDATE DELETE ALTER DROP CREATE
所有权限 查询权限 插入

4.6 查询权限
show grants for 'user1'@'localhost';

4.7 授予权限
grant 权限列表 on 数据库名.表明 to 'user1'@'localhost';
grant all on mysqldb.* to 'user1'@'localhost';

4.8 撤销权限
revoke all on mysqldb.* to 'user1'@'localhost';

然后是sql语句优化,DDL和DCL语句没啥可以优化的,
DML语句:
1,插入:
a,批量插入,每次1000-2000条;手动提交事务;
b,大批量数据使用load指令:mysql --local-infile -u root -p
select @@local-infile;set global local_infile = 1;
load data local infile '/root/sql/tb_sku1.sql' into table `tb_sku` fields terminated by ',' lines terminated by '\n';
c,主键优化。(数据组织方式,表数据根据主键顺序存放。称为索引组织表)
c1,插入数据时选择顺序插入,主键乱序插入会发生页分裂现象,页合并现象。
c2,尽量降低主键的长度。
c3,避免对主键的修改。
2,update语句:更新数据时需要使用索引字段,否则会锁表。有索引就是行锁。

DQL语句优化,最主要的就是设计合理的索引。
1,order by:
a,尽量覆盖索引。这个并不容易实现
b,适当增加 sort_buffer_size 大小 默认256K.

2,limit:大数据量越靠后的数据性能越低,可以使用子查询+覆盖索引。
select * from t ,(select id from t limit 10000,10) k where t.id = k.id;

3,count(*):null值不会计数。count(*) 效率最高。

4,增加内存分配,专属服务器建议80%的内存都要分配给内存缓冲区 buffer pool,提高mysql响应效率。

客户端工具:
mysql
mysqldump / mysqlimport、source 导出/导入
mysqlbinlog
mysqladmin
mysqlshow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lx18854869896

和谐社会靠你了,老铁...

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值