innodb_autoinc_lock_mode
innodb_autoinc_lock_mode 有三种值0 1 2 一般默认的为1innodb_autoinc_lock_mode=0这种为传统模式,所有的insert-like语句都会持有 table-level AUTO-INC lock也就是加锁,一直到语句执行完成,分配的自增列值也是连续的,可预知的。同时, 在statement-based的复制模式下,可以保证主从自增列一致。innodb_a...
物理DG角色切换
1.角色切换分为两种:一种是切换角色,一种是在主库故障的时候,切换至备库,这个时候如果不是在最大保护或者最大可用性的模式下,有可能会导致数据丢失。如果主库开启了闪回,那么主库还是有可能成为新的主库的备库的。2.切换之前的准备:1>可以查看是否有gap:SQL> SELECT STATUS, GAP_STATUS FROM V$A...
物理DG 日志传输以及应用过程
mysql 中的主备会经常碰到主库和备库日志传输延迟,其中一个role突然宕机,这时候会发生什么?最近刚好在生产环境中碰到切换物理DG的需求,参照学习,准备研究一下oracle中主备切换时日志未及时应用,oracle怎么处置!1.redo日志同步传输:事务会等到redo日志传输到所有可以到达的备库之后再提交。这种一般是...
5.6的online ddl
下午在更改一个表结构的时候,将其中的一个字段类型从varchar(30) 变更到varchar(512) 发现了上面tmp table的现象,而且造成很多元数据锁等待。不是说5.6支持online ddl 不需要create temp table的么?在增加表字段的时候 ,出现的一直是altering table上图分别是增加字段,将字段长度由30改为512,由30改为...
ORACLE buffer cache 原理 --LRU链表(参照学习:oracle内核技术揭秘)
OBJ-Q对象列表在合并IO的过程中起了很大作用,因为脏块在从CKPT-Q中移到对象列表的时候会将不同对象的块链在一起,这样更容易找到连续的块进行合并。LRU链表一共包括4个链表,主LRU、辅助LRU、主LRUW和辅助LRUW,前两者是在buffer cache中寻找可以覆盖的buffer块,后两者也是DBWR用于写脏块的。物理读时,数据...
ORACLE buffer cache 原理 --检查点队列链表(参照学习:oracle内核技术揭秘)
CKPT-Q 和 LRU在update过程中,首先在前文所讲的CBC Latch的保护下修改数据,之后进程先持有 checkpoint queue latch,然后将5号文件中的1234号块加入到检查点队列(CKPT-Q),当然还有产生对应的redo数据。再次update时 会在产生一个新的redo数据,并不会影响CKPT-Q,所以只有在不脏变脏的过程中才需要持有 checkpoi...
ORACLE buffer cache 原理 --hash链表(参照学习:oracle内核技术揭秘)
对于一个块,磁盘中叫block,内存中叫buffer。如何知道一个块是否‘在buffer cache中呢?oracle 采用的是hash算法。根据文件号块号来计算hash值,根据该值 定位到想用的bucket每个hash bucket中都保存有一个指向cache buffer cache链表的链表头。bucket ——> buffer head (file_id,block_id)CBC链表...
mvcc-奇怪的现象
奇怪的现象1:session1:root@localhost : test 08:43:09> select * from test1;(1)+---------+------+| orderid | ID |+---------+------+| 2 | 123 |+---------+------+1 row in set (0.00 sec)root@localhost : test 08:43:14> start tran...
索引列选值会影响索引的选择么?
试验之后得到的初步结论是:当org的值存在于t1表中的时候,走的是我们期望看到的idx4 当org的值不存在的时候看到的是我们不希望看到的 idx2。看到这里,就有了难道索引在选择的时候还会受索引键值的影响?查看trace文件...
oracle内存管理
1> 设定MEMORY_TARGET 和MEMORY_MAX_TARGET的值 可以指定自动管理内存方式,MEMORY_TARGET是可以动态调整的参数,则不是动态且有限制,所以不宜设置太高!2> 内存结构3>如果没有设置MEMORY_MAX_TARGET,将自动将memory_target的值赋予它!如果memory_target没有设置的话,启动的时候...
元数据锁导致的会话等待
在月底加分区的时候某个表发现一只卡在那,进入到对应实例发现大量的元数据锁等待这个问题的原因是:该系统之前的某个会话执行相关表的操作之后未提交会话,一直占据改表的元数据锁没有释放解决办法是:查询information_schema.trx将其中的空事务kill掉,使其释放该表元数据锁。kill 532...
MYSQL5.7-GTID概要翻译
GTIDglobal transaction identifier 每一个事务提交的回收都会在主库上对应生成一个GTID,这个标识是唯一的,不仅是在主库唯一,是在所有的复制集间都是唯一的。? GTID = source_id:transaction_id? mysqlbinlog --base64-output=DECODE-ROWS 或则在 SHOW BINLOG EVENTS的输出内容中可以看得到。? 一旦...
数据导入导出EXP/IMP
?1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中?? exp system/manager@TEST file=d:\daochu.dmp full=y?2 将数据库中system用户与sys用户的表导出?? exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)?3 将数据库中的表tab...
mvcc中的read_view
innodb的mvcc和read view最近读High Performance MySQL,里面提到了innodb事务隔离级别是REPEATABLE-READ时,有这样一段话引用SELECTInnoDB must examine each row to ensure that it meets two criteria:a. InnoDB must find a version of the row that is at least as old as the transaction(i.e., its versio...