20190522
innoDB 锁的隐式调用和显式调用
隐式调用: 在事务执行时 自动加上锁 在commi或rollback的时候会释放所有的锁
显示调用:例如SQL语句 select … lock in share mode
select … for update
MYSQL也支持 LOCK TABLES 和 UNLOCK TABLES,但这是在服务层实现的,显示调用不能执行此语句。
MVCC版本控制 只在 repeatable read 和 read commit 隔离级别下工作
innoDBmvcc是通过每条记录后加两个字段来实现的, 一个是创建时间一个是过期时间, 存储的实际是版本号
select 需要满足的条件 1.事务只能读取比自己版本号低的版本 2.行的删除版本必须大于当前事务,或未定义 这样才能获取数据
insert 保存当前系统版本号作为创建标识
delete 保存当前系统版本号作为删除标识
update 将当前系统版本号作为原来数据的删除标识
将当前系统版本号作为当前数据的创建标识
命令:show table status like ‘user’ \G 可以查看表的相关信息
innoDB 支持热备份, 工具有 mysql Enterprise Backup XtraBackup
数据和索引都放在一个文件中
myisam 全文索引 数据和索引 分别存放在 .myd 和 .myi为扩展的文件中
20190523 2-3章
基准测试 TPC-C
如果需要找到性能损耗在哪,需要找到其花的时间在哪
可以开启慢查询日志对慢查询进行分析 可以通过设置 long_query_time 为 定值捕获大于
查询时间大于这个定值的sql 不用担心日志io开销, 而且只在测试开启即可
Percona Server 慢查询日志 pt_query_digest 慢查询日志分析报告工具
重点:分析执行语句 show profile
第一步:开启profile ----- SET profiling = 1
第二步 监听查询
第三步 show profiles 查看所有执行的语句的时间
第四不,对某一句进行分析 show profile for query [query_id];
show status 可以查看一些数据库值
开启查询日志进行分析