暂无图片
关于engine status中关于16进制列的解释
我来答
分享
暂无图片 匿名用户
关于engine status中关于16进制列的解释

create table t1(id int,c1 varchar(10)) primary key(id)


select * from t1 where id=1 for update;

id c1

1 aa

show engine innodb status 

n_fields:4 

0

1

2

3

create table t5(a int,b int);

select * from t5 where a=2 for update;

a b

2 2

show engine innodb status 

n_fields:5

0

1

2

3

4

问题1:表结构都是2列,结果却是一个4列,一个5列,

问题2:

0

1

2

3

4   

这5列分别代表啥含义?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
大大刺猬

原理

n_fields 除了包含实际列外, 还包含TRX(6字节)和ROLLPTR(7字节), 如果表没得主键的话, mysql会自动创建一个row_id作为主键, 所以没得主键的还得加1列.

答案

所以, t1表4个字段(id,trx,rollptr,c1), t5表5个字段(row_id,trx,rollptr,a,b). 详情可以看看这篇文章: https://www.modb.pro/db/1827892308630659072
image.png

有个问查看row_id的, 你们不会是一个人吧…

暂无图片 评论
暂无图片 有用 2
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
mysql如何查看所有复合主键的表名?
回答 2
已采纳
查询mysql.indexes里面
什么是死锁?锁等待?通过数据库哪些表可以监控?
回答 1
已采纳
死锁是指两个或多个事务在同一资源上互相占用,并请求加锁时,而导致的恶性循环现象。当多个事务以不同顺序试图加锁同一资源时,就会产生死锁。锁等待:mysql数据库中,不同session在更新同行数据中,会
MySQL里面建了一个表,这个表查也查不动,删除也一直删除不掉,库里其他表没这个问题,如何排查?
回答 2
确保连接到了正确的数据库:验证当前连接的数据库是否是包含该表的数据库。可以使用以下命令确认当前所在的数据库:SELECTDATABASE();检查表名和语法:确认表名是否正确,并确保在查询和删除语句中
MySQL的全表扫描和索引优化
回答 2
已采纳
从业务逻辑优化吧,比如where限制下phonenumber,我试了下你这个SQL,速度还行啊.0.33秒
mysql中如何实现按概率抽取
回答 1
已采纳
可以先把这40个权重字段的值先设置成40个吗?如果设置成了40个不一样的。你随便取值都是不一样的,只要不取取过的。
为什么MYSQL子查询同名列会报错?
回答 2
已采纳
执行计划的区别,oracle为了提升count()性能,可以不去处理子查询里的每个字段,此时有没有重复字段也无所谓,因为它只需要知道有多少数据就行了
MySQL 或者其他数据库处理事务是串行的?不能进行并发处理吗?
回答 1
已采纳
不管你怎么并发写binlog你解析看看都是一条条写入吧?并行读,但是是顺序写。并行读就是并发处理呀。至于写为了一致性所以要有锁啊。必须一个释放才能操作进行啊。
MySQL数据库中,对于where 条件包含 OR 关系的SQL,以下描述哪些是对的?
回答 3
已采纳
B
mysql中,有以下SQL: explain SELECT * FROM emp FORCE INDEX () where job ='SALESMAN'; 其中JOB列上有索引。其他列上无索引。 请问,上述SQL最终会采用何种访问方式
回答 1
已采纳
B报语法错误
mysql8怎么查看优化后的sql?
回答 1
举一个例先执行explainselectisdelete,isvipfromuserwhereisdeleteisvipandisdelete0;然后再执行showwarnings;就可以看到优化后的