MySql性能优化

1、MySQL Innodb data_free 清理

每当MySQL从你的列表中删除了一行内容,该段空间就会被留空。而在一段时间内的大量删除操作,会使这种留空的空间变得比存储列表内容所使用的空间更大。留空空间过大会影响SQL的执行速度,可以通过  ALTER TABLE table_name ENGINE = Innodb; 回收表空间

查看碎片

SELECT table_name,ENGINE,table_rows,data_length+index_length LENGTH,DATA_FREE 
FROM information_schema.tables WHERE TABLE_SCHEMA='database';

 DATA_FREE表示碎片

回收空间

ALTER TABLE tablename ENGINE=InnoDB

2、innodb_flush_log_at_trx_commit  InnoDB事务日志刷盘设置

0,在提交事务时,InnoDB不会立即触发将缓存日志写到磁盘文件的操作,而是每秒触发一次缓存日志回写磁盘操作,并调用操作系统fsync刷新IO缓存。
1,在每个事务提交时,InnoDB立即将缓存中的redo日志回写到日志文件,并调用操作系统fsync刷新IO缓存。
2,在每个事务提交时,InnoDB立即将缓存中的redo日志回写到日志文件,但并不马上调用fsync来刷新IO缓存,而是每秒只做一次磁盘IO缓存刷新操作。
安全1 > 2 > 0,速度0 > 2 > 1

查看配置

SELECT @@innodb_flush_log_at_trx_commit;

设置

SET GLOBAL innodb_flush_log_at_trx_commit=1;

3、transaction_isolation  事务隔离级别

MySQL默认为REPEATABLE-READ,它利用自身独有的Gap Lock解决了"幻读"。但也因为Gap Lock的缘故,相比于READ-COMMITTED级别的Record Lock,REPEATABLE-READ的事务并发插入性能受到很大的限制。如果不是金融、电信等事务级别要求很高的业务,完全可以设置成transaction_isolation=READ-COMMITTED。

查看配置

SELECT @@global.tx_isolation;

设置

SET GLOBAL tx_isolation='repeatable-read';

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值