MySQL45讲学习笔记
希望使用9天时间,按照每天5讲的速度,对于该专栏进行第二次学习记录,希望能指出理解上的错误
bugplus-free
花有重开日,人无在少年
展开
-
MySQL45讲(一)(45)
mysql内部有一个global_query_id的全局变量,然后把他赋值给Query_id,对于变量+1,对于事务执行的第一条语句,还会把Query_id赋值给这个事务的Xid,,应为他是个内存变量,可能清空就没了,重新开始,然后Xid和redo log 和bin log是有关的,所以一般数据库重启之后很小概率会出现重复的,因为binlog文件会新建一个。,对于并发的只读事务,他们的trx变量的指针的地址肯定是不同的,这样的不同并发只读事务,查出来的trx_id就是不同的。就是用来区分读写事务的。原创 2024-05-04 16:56:33 · 295 阅读 · 0 评论 -
MySQL45讲(一)(44)
对于备库自增主键的问题,对于insert_id=某个值的时候,如果A早于B但是提交的时候B早于A的话,binlog就会更早,然后再主从的时候,如果你是处于binlog_format=statement的时候,应为只记录一条语句,就会导致语句A的id和语句B的id插入的顺序反过来了,导致数据出现问题,但是如果你使用的binlog_format=row格式的话,再每条语句执行前,会加入一个set statement=id的格式来明确表示,接下来的语句的自增id填哪一个,所以就可以保证不会出错。原创 2024-05-04 16:12:24 · 196 阅读 · 0 评论 -
MySQL45讲(一)(43)
分区表在mysql8.0的时候已经不允许myisam进行分区表的创建,应为该方法使用的是通用分区策略,然后就是open_file_limits的默认值是1024,然后就要把所有的分区表都要访问个遍,如果分区多一点,直接就报错了,所以之后就直接禁用这个策略了。这个分区表,在server上是一个,但是在引擎层却有好多个,然后就造成开启事务的时候不同的分区,锁并不是连贯的,例如2017和2018的数据都不在同一个分区内,然后你加锁,之后的操作并不会影响到另外一个分区。对于mysql打开分区表时,会浏览整个分区。原创 2024-05-04 14:51:36 · 245 阅读 · 0 评论 -
MySQL45讲(一)(42)
如果你使用的是revoke super对于用户权限进行清空的话,已经建立起来的用户是并不会收到影响的,除非断开连接进行重连,如果需要马上删权限的话,那么就需要进行revoke all privileges这样的话就会对于acl_dbs的对象数组进行更新,然后因为对于用户权限都是先要对于这张表进行查阅的,所以说明权限直接被清空。然后就会出现神奇的一幕,如果你给这个用户添加权限会出现用户不存在,然后你添加这个用户就会出现用户存在的离奇事件,这就是内存和磁盘的权限不同意造成的。该节是有关于数据库权限的文章。原创 2024-05-03 15:21:23 · 305 阅读 · 0 评论 -
MySQL45讲(一)(41)
这一小节是对于数据库的表进行拷贝,有兴趣的人可以了解。原创 2024-05-03 14:46:39 · 59 阅读 · 0 评论 -
MySQL45讲(一)(40)
如果执行insert select from 这条语句是对于一张表的全部字段的话,这张表会加锁,以防在复制这张表的时候有其他语句对于表进行修改,应为如果允许其他表进行修改的话,那么可能导致binlog日志会存在问题,这样在你本地可能没啥问题,但是主从复制可能就出现问题了,因为主从复制是通过binlog来实现的。insert into ... on duplicate key update这个语义的逻辑是,插入一行数据,如果碰到唯一这个语义的逻辑是,插入一行数据,如果碰到唯一键约束,就执行后面的更新语句。原创 2024-05-03 14:29:01 · 1004 阅读 · 0 评论