摘要: go中的map是并发不安全的,同时多个协程读取不会出现问题,但是多个协程 同时读写就会出现 fatal error:concurrent map read and map write的错误。通用的解决办法如下: 1. 加锁 1.1 通用锁 import "sync" type SafeMap str 阅读全文
posted @ 2020-12-21 18:13 卷毛狒狒 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 最近在开发中使用了for range来遍历一个slice,结果在测试的时候遇到了bug,最后定位是错误使用for range造成的,这里记录一下: func redisSlaveScanBigKeys(slaveClient *redis.Client, bigKeyChan chan *bigKe 阅读全文
posted @ 2020-09-22 19:15 卷毛狒狒 阅读(434) 评论(0) 推荐(0) 编辑
摘要: partial page write问题: 默认情况下,innodb的一个页面时16k大小,其数据校验也是针对这16k来校验的,将数据写入磁盘是以页面为单位的。文件系统是以4k为单位写入的,机械磁盘是以扇区【512字节】为单位写入的,因此不能保证一个16k的页面原子性写入。如果在刷新脏页的时候系统宕 阅读全文
posted @ 2020-09-22 18:55 卷毛狒狒 阅读(603) 评论(0) 推荐(0) 编辑
摘要: 今天使用pt-osc修改mysql表结构,又出现死锁了,老大让尽量解决这个问题,我们先分析一下pt-osc容易出现死锁的原因,再来解决这个问题。 根据pt-osc打印的日志,可以看到pt-osc执行原理:1. 创建一个跟原表表结构一样的新表;注意:这里的新表是一个临时表 _table_new2. 修 阅读全文
posted @ 2020-09-10 19:32 卷毛狒狒 阅读(599) 评论(0) 推荐(0) 编辑
摘要: 上周末晚上运营做直播,业务代码不规范,访问1个redis竟然把1台服务器的网卡打满了,这台服务器上的其他redis服务都受到了影响。之前没有做这方面的预案,当时又没有空闲的机器可以迁移,在当时一点办法都没有,尴尬啊,就这样拖到了直播结束。结束后做复盘,leader对数据库这边要求必须对数据库使用服务 阅读全文
posted @ 2020-09-04 11:09 卷毛狒狒 阅读(428) 评论(0) 推荐(0) 编辑
摘要: 在分析redis集群中大Key的时候,通常都采用分析rdb文件的方式;但是这种方式需要在每一台redis服务器上部署分析程序及分析脚本,而像salt之类的工具运维没有开放给我们使用,一台一台部署不好管理。正好我们的总redis规模不大,大概在200个集群左右,考虑到cluster集群,需要分析的re 阅读全文
posted @ 2020-08-04 19:16 卷毛狒狒 阅读(546) 评论(0) 推荐(0) 编辑
摘要: 最近遇到一个奇葩的需求,需要将mysql的主从复制模式由ABB修改为ABC,恰好这个mysql集群没有开启GTID,当时是在B上做了一次全量备份,然后使用该全量备份恢复C的方式进行的。做完之后在想有没有简单的方式实现,最终有了结果。 假设原主从复制拓扑为 A -- B1 -- B2,最终要求 B2作 阅读全文
posted @ 2020-07-24 10:09 卷毛狒狒 阅读(186) 评论(0) 推荐(0) 编辑
摘要: mdl锁的主要作用是用来维护表元数据的一致性。在表上有活动事务的时候,不可以对表元数据进行修改操作。 如果没有MDL锁的保护,那么session2可以直接执行,并导致session1出错。 MDL锁是server层级的锁,每执行一条DDL DML语句事都会申请MDL锁,MDL加锁过程事系统自动控制, 阅读全文
posted @ 2020-07-21 20:25 卷毛狒狒 阅读(738) 评论(0) 推荐(0) 编辑
摘要: 《高性能 MySQL》描述:1. 通过两个隐藏列,一个保存行的创建时间,一个保存行的过期时间RR隔离级别:检索创建时间在当前事务版本号之前的数据,同时会检查数据的删除时间,保证新的删除操作不可见。select * from table where create_version <= ${versio 阅读全文
posted @ 2020-07-20 22:28 卷毛狒狒 阅读(274) 评论(0) 推荐(0) 编辑
摘要: mysql中,使用explain可以模拟优化器执行sql语句,分析查询语句的性能瓶颈。 id:select查询的序号,表示的是查询中执行select子句的顺序。关注该字段获取sql语句各子句的执行顺序 1. id相同表示加载的顺序是从上到下 2. id值越大,优先级越高,越先被执行 select_t 阅读全文
posted @ 2020-07-19 22:40 卷毛狒狒 阅读(276) 评论(0) 推荐(0) 编辑