摘要:
MongoDB的Profiler类似MySQL的SlowLog和GeneralLog的结合,通过设置不同的Profiling级别,来决定记录哪些实例执行过的CURD、配置和管理命令。 Profiler会将搜集的内容记录在每个被Profiled的数据库中,名为system.profile的capped 阅读全文
摘要:
最近一个MySQL 5.7.21备库告警当天的备份失败,登录上去看的时候发现前一天的备份任务还没有结束,通过查看日志发现无法备份成功的原因是一直无法获取FTWRL锁,登录MySQL查看会话状态发现其中几个复制worker一致处于异常状态,下发STOP SLAVE命令时命令也一直被卡住,当时的会话状态 阅读全文
摘要:
内存统计信息的聚合 内存统计信息的聚合总共有5个维度,也分别对应以下5张表,分别是: MEMORY_SUMMARY_BY_ACCOUNT_BY_EVENT_NAME MEMORY_SUMMARY_BY_HOST_BY_EVENT_NAME MEMORY_SUMMARY_BY_THREAD_BY_EV 阅读全文
摘要:
内存监控接口则是PSI_memory_service_v2对象数组中的函数,具体的相关函数有:pfs_memory_alloc_vc、pfs_memory_realloc_vc、pfs_memory_claim_vc、pfs_memory_free_vc。 内存跟踪的相关数据结构 PFS监控信息的存 阅读全文
摘要:
InnoDB存储引擎层基础内存分配 如果在编译MySQL的时候不开启FPS的监控,InnoDB对动态内存(heap)的分配和释放使用基础的new、delete、malloc、free等。 默认InnoDB对内存的分配和回收会添加FPS的监控模块。InnoDB对动态内存(heap)的分配和回收使用封装 阅读全文
摘要:
SETUP_INSTRUMENTS表 首先看一下PERFORMANCE_SCHEMA.SETUP_INSTRUMENTS的表结构: CREATE TABLE `setup_instruments` ( `NAME` varchar(128) NOT NULL, `ENABLED` enum('YES 阅读全文
摘要:
MySQL的"commit"命令提交事务时,内部会进行两阶段提交,这篇文章基于MySQL 8.0.33源码分析一下MySQL的两阶段提交。 整体逻辑整理如下: Prepare阶段: 1. Binlog Prepare 1.1 获取上一个事务最大的last committed时间戳 2. Innodb 阅读全文
摘要:
DROP TABLE的堆栈 #0 row_drop_table_from_cache (tablename=0x7f7d580295b0 "db/t", table=0x7f7d58008b20, trx=0x7f7e50c0b150) at /root/mysql-5.7.32/storage/i 阅读全文
摘要:
STOP REPLICA的用户线程堆栈: #0 0x00007f73d8878de2 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00000000048d9f56 in native_cond_ 阅读全文
摘要:
从MySQL 8.0.23版本开始,CHANGE MASTER TO开始被替换为CHANGE REPLICATION SOURCE TO,下面使用MySQL 8.0.32的代码分析语句的具体执行流程。 从语句的入口函数mysql_execute_command开始,在命令执行之前首先会检查语句执行用 阅读全文