上一页 1 2 3 4 5 6 7 ··· 15 下一页
摘要: 读写分离有哪些坑? 读写分离存在的问题,主要是从库不可避免存在同步延迟,导致客户端在从库读取到旧数据。 读写分离架构 读写分离主要目的时分摊主库的压力。 上面的结构是client主动选择后端数据库。 还有一种结构是带Proxy的读写分离架构 客户端直连和带proxy读写分离架构的优缺点 客户端直连结 阅读全文
posted @ 2022-04-08 23:06 yihailin 阅读(299) 评论(0) 推荐(0)
摘要: 主库出问题了,从库怎么办? 备库:同步主库的binlog,当主库出问题时,备库切换为主库。一般不提供读服务。 从库:同步主库的binlog,只对外提供读服务。 一主多从主备切换 方法 基于位点的主备切换 首先我们知道,设置从库时的命令 CHANGE MASTER TO MASTER_HOST=$ho 阅读全文
posted @ 2022-04-08 00:49 yihailin 阅读(143) 评论(0) 推荐(0)
摘要: MySQL怎么实现主备一致 主备切换 主备流程图 主库的后台线程通过长连接将binlog日志同步到从库,从库的io_thread接受binlog写入从库的redo log ,从库的sql_thread线程重放redo log 到数据库。 在备库 B 上通过 change master 命令,设置主库 A 的 IP、端口、用户名 阅读全文
posted @ 2022-04-06 19:46 yihailin 阅读(185) 评论(0) 推荐(0)
摘要: 慢SQL治理主要从三个方面进行优化 从数据表的定义开始优化 从索引设计开始优化 从查询开始优化 优化表设计 表字段长度尽量紧凑,字段尽量不冗余 字段类型尽量考虑用简单的类型 字段尽量有默认值,且默认值尽量不要用null 优化索引 设计索引的时候,尽量让查询用到索引,并且减少回表次数。 业务查询频率高 阅读全文
posted @ 2022-03-31 23:37 yihailin 阅读(136) 评论(0) 推荐(0)
摘要: binlog的写入机制 每个线程都会先将日志写入到binglog cache, 事务提交的时候,再把binlog cache写到binlog文件中。所有线程都写一个binlog日志。 binlog_cache_size 用于控制单个线程内binlog cache 所占内存的大小,如果超过了这个参数规 阅读全文
posted @ 2022-03-16 23:24 yihailin 阅读(586) 评论(0) 推荐(0)
摘要: 短连接风暴 正常的短连接模式就是连接到数据库后,执行很少的 SQL 语句就断开,下次需要的时候再重连。 怎么解决短连接引起数据库连接数暴涨的问题? 先处理掉那些占着连接但是不工作的线程。怎么做呢?show processlist, 踢掉显示为sleep的线程,但是这样也会误杀执行事务的线程,使用命令 阅读全文
posted @ 2022-03-12 22:39 yihailin 阅读(77) 评论(0) 推荐(0)
摘要: 幻读指的是事务中读取到的记录数量不一致,只有RR可重复读事务隔离级别才存在幻读。 并且幻读需要当前读才会出现。 幻读有什么问题? 造成数据不一致的问题。尤其时binlog 格式为statement。先开始但后提交的事务会将数据覆盖更新了 如何解决幻读? MVCC版本控制 + 间隙锁。间隙锁和间隙锁不 阅读全文
posted @ 2022-03-10 23:20 yihailin 阅读(2211) 评论(0) 推荐(0)
摘要: 众所周知,MySQL索引是以B+树存储的,而且是否使用索引是由引擎决定的,当MySQL觉得走索引花费开销大时,反而会放弃走索引。 总结一下,哪些情况下会使索引失效: 对where条件中的字段进行了函数操作,比如month(t_modified)=7; 隐式类型转换,比如where id_card=1 阅读全文
posted @ 2022-03-09 22:40 yihailin 阅读(476) 评论(0) 推荐(0)
摘要: Wall Clock vs Monotonic Clock (墙上时钟 vs 单调时钟) 墙上时钟指的是我们日常意义上的时间,正如墙上的时钟代表的时间一样。单调时钟指的是某个时间点后开始计算的时间,单纯意义上的代表的时间是没有意义的。 操作系统上相对应的提供了两套时间,分别对应墙上时钟和单调时钟,操 阅读全文
posted @ 2022-02-20 20:51 yihailin 阅读(373) 评论(0) 推荐(0)
摘要: Cell与RefCell 的相同点:绕开所有权的限制,实现内部可变性性 rust 的所有权规则: 只能由一个可变引用 允许存在多个不可变引用 fn modify(a: &mut i32) { *x = *x + 1; } fn main() { let a = 111; modify(&mut a) 阅读全文
posted @ 2022-02-20 00:43 yihailin 阅读(834) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 ··· 15 下一页