mysql调优学习

1.执行计划
在这里插入图片描述MySQL逻辑架构
在这里插入图片描述

EXPLAIN select * from api_attr;

执行结果
在这里插入图片描述
使用START TRANSACTION开启事务,然后要么使用COMMIT提交事务,要么使用ROLLBACK回滚事务

START TRANSACTION;
UPDATE api_attr SET api_name = 5678 WHERE ID = 138;
DELETE FROM api_attr WHERE ID = 139;
COMMIT;

MySQL默认使用AUTOCOMMIT,也就是说如果没有显示的开启一个事务则每个查询都会被视为一个事务执行提交操作,展示是否默认,0为禁用,1为启用。

SHOW VARIABLES LIKE 'AUTOCOMMIT';
SET AUTOCOMMIT = 0;
SET AUTOCOMMIT = 1;

设置隔离级别

set TRANSACTION isolation LEVEL read COMMITTED;
//新的隔离级别会在下一个事务进行,也可以在配置文件中设置全局的隔离级别

提交事务并开启下一个事物:少写了一个begin

commit work and chain

可以在 information_schema 库的 innodb_trx 这个表中查询长事务,比如下面这个语句,用于查找持续时间超过 60s 的事务


select * from information_schema.innodb_trx where TIME_TO_SEC(timediff(now(),trx_started))>60

一天一备跟一周一备的对比。
好处是“最长恢复时间”更短。
在一天一备的模式里,最坏情况下需要应用一天的 binlog。比如,你每天 0 点做一次全量备份,而要恢复出一个到昨天晚上 23 点的备份。一周一备最坏情况就要应用一周的 binlog 了。系统的对应指标就是 RTO(恢复目标时间)。当然这个是有成本的,因为更频繁全量备份需要消耗更多存储空间,所以这个 RTO 是成本换来的,就需要你根据业务重要性来评估了。

索引模型的概念。
可以用于提高读写效率的数据结构很多,
这里我先给你介绍三种常见、也比较简单的数据结构,
它们分别是哈希表、有序数组和搜索树。

哈希表是一种以键 - 值(key-value)存储数据的结构(就是hashmap的结构),
我们只要输入待查找的键即 key,就可以找到其对应的值即 Value。哈希的思路很简单,把值放在数组里,用一个哈希函数把 key 换算成一个确定的位置,然后把 value 放在数组的这个位置。不可避免地,多个 key 值经过哈希函数的换算,会出现同一个值的情况。处理这种情况的一种方法是,拉出一个链表

数组已排序的情况下,用二分法排序最快

如果仅仅看查询效率,有序数组就是最好的数据结构了。
但是,在需要更新数据的时候就麻烦了,你往中间插入一个记录就必须得挪动后面所有的记录,成本太高。所以,有序数组索引只适用于静态存储引擎

二叉搜索树也是课本里的经典数据结构了

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值