init -> down : 从length/2-1 开始, 往前迭代down
1 2 3 4 4/2-1 = 1
1 2 3 3/2-1 = 0
1 2 3 4 5 6
6
5 3 4 2 1
6/2-1 = 2
0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 10
left: 2n+1 right: 2n+2
parent: (n-1)/2
Push: 将元素放到完全二叉树的叶子节点, 然后用改节点执行up Pop: 将0 index 元素与完全二叉树最后一个叶子节点交换, 并去除该节点, 之后用根节点(被替换上来的完全二叉树的叶子节点) 做 down down: 当前节点与更"小"的子节点交换, 如果发生交换, 继续迭代被交换的子节点 up: 当前节点与更"小"的父节点节点交换, 如果发生交换, 继续迭代被交换的父节点 Fix: 当前节点执行down, 如果没发生down(子树都比它小), 那就检查是否需要up Remove: 类似Pop, 不过是用索引 i 的元素与完全二叉树的最后一个叶子节点交换, 然后 Fix 索引 i 的元素, 最后做 Pop
| 指标 | 查看地方 | 前提 | 备注 |
|---|---|---|---|
| IO等待 | performace_schema.table_io_waits_summary_by_table | setup_instruments.memory/performance_schema/table_io_waits_summary_by_index_usage.enabled=YES |
| 指标 | 查看地方 | 前提 | 备注 |
|---|---|---|---|
| 锁持有时间 | performace_schema.table_handles | setup_instruments.wait/lock/table/sql/handler.enabled=YES | 行仅展示了是否持有 |
| 锁等待 | performace_schema.table_lock_waits_summary_by_table | setup_instruments.enabled=YES(count) timed=YES(timed) |
| 指标 | 查看地方 | 前提 | 备注 |
|---|---|---|---|
| 处理 relay log 文件数 | show slave status.Relay_Log_File or Relay_Master_Log_File | start slave |
| 指标 | 查看地方 | 前提 | 备注 |
|---|---|---|---|
| 记录 performance_schema 使用的内存 | select * from memory_summary_global_by_event_name where event_name like ‘memory/performance_schema%’ | select enabled from setup_instruments where name like ‘memory/performance_schema%’ = ‘YES’ | |
| 记录 innodb 相关使用的内存 | select * from memory_summary_global_by_event_name where event_name like ‘memory/innodb%’ | select enabled from setup_instruments where name like ‘memory/innodb%’ = ‘YES’ | 看上去关系很大, 但是在db34上看不到? 待确认 |