04 2021 档案

摘要:char定长字符0-255个字符 varchar变长字符0-65536个字符 text 存储长度为4G blob 存储长度为4G没有字符集属性二进制存储 阅读全文
posted @ 2021-04-30 14:27 rudynan 阅读(54) 评论(0) 推荐(0) 编辑
摘要:1. 不推荐使用整形设置unsigned 若非使用参数 sql_mode 务必额外添加上选项 NO_UNSIGNED_SUBTRACTION; unsigned的字段当聚合计算的时候当出现负数的时候会报错,如果不加上面的参数时 2. 自增整形类型做主键建议使用bigint 因为int最大范围42亿 阅读全文
posted @ 2021-04-30 13:43 rudynan 阅读(1483) 评论(0) 推荐(0) 编辑
摘要:只记录了部分https://www.cnblogs.com/zejin2008/p/5262751.html这个博客讲的很明白 注意:gap间隙锁是不互斥的,对一个范围加了gap锁 其他事务还可以对这个范围加gap锁 案例1. 在开发中先查询没有就插入 存在就更新 以id为主键为例,目前还没有id= 阅读全文
posted @ 2021-04-29 16:34 rudynan 阅读(70) 评论(0) 推荐(0) 编辑
摘要:mysql的查询优化器会找出执行该语句的所有可能的方案,对比找出成本最低的执行计划 1. 计算全表扫描的成本 计算全表扫描需要两个信息,聚簇索引占用的页面数,该表的记录数,mysql为每个表维护了一系列的统计信息 使用 SHOW TABLE STATUS可以查看信息 rows 对应myisam这个值 阅读全文
posted @ 2021-04-25 11:50 rudynan 阅读(168) 评论(0) 推荐(0) 编辑
摘要:file space header 存储着表空间一些整体属性 - List Base Node for FREE List xdes entry空链表的基节点 - List Base Node for FREE_FRAG List xdes entry不满链表的基节点 - List Base Nod 阅读全文
posted @ 2021-04-22 15:25 rudynan 阅读(224) 评论(0) 推荐(0) 编辑
摘要:独立表空间 表空间中存储着承载数据的页,对于16kb的页来说,64个页组成一个区(extent),也就是默认一个区1M,每256个区划分为1组 区的概念是用来管理页的,目的是让在同一个区的页尽量在物理介质上离得近,一个区在物理上就是连在一起的64个页,以提高io查找效率,当数据多的时候会直接分配一个 阅读全文
posted @ 2021-04-22 11:15 rudynan 阅读(91) 评论(0) 推荐(0) 编辑
摘要:acquire方法:1. 在调用acquire方法时如果线程被中断抛出异常 这个是响应中断的方法2. 如果阻塞队列中有等待线程直接返回-1 当前线程进入阻塞队列2.1 阻塞队列中没有线程,会用state减去acquires值,如果大于等于0 获取信号量成功 返回大于等于0的值 如果失败返回小于0的值 阅读全文
posted @ 2021-04-20 21:52 rudynan 阅读(83) 评论(0) 推荐(0) 编辑
摘要:核心方法 dowait 1, 等generation被打破之后 再有线程调用dowait方法时会直接 抛出BrokenBarrierException 2. 在调用dowait方法时线程被中断也会 打断generation 并唤醒所有在这一代挂起的线程 当前线程抛出 InterruptedExcep 阅读全文
posted @ 2021-04-19 22:08 rudynan 阅读(41) 评论(0) 推荐(0) 编辑
摘要:await方法 1. 中断线程调用await方法会直接抛异常 2. 如果status值不等于0 先封装成node节点加入双向链表阻塞队列 然后park挂起 这里是个自旋方法等待唤醒 countdown方法 1. 调用 releaseShared 方法,只有count-1等于0的时候才会执行释放阻塞线 阅读全文
posted @ 2021-04-15 21:55 rudynan 阅读(53) 评论(0) 推荐(0) 编辑
摘要:1. 多线程处理网络请求 redis网络io处理是性能瓶颈,单个主线程处理网络请求的速度跟不上底层网络硬件的速度 6.0采用多个线程来处理网络io提升网络请求处理的并行数 对于读写操作还是使用单线程 当主线程处理完命令之后 将结果写入缓冲区 等待io线程写回socket 所以io线程负责读写sock 阅读全文
posted @ 2021-04-14 13:40 rudynan 阅读(282) 评论(0) 推荐(0) 编辑
摘要:redis cluster实例间通过gossip协议进行通信,各个实例之间通过ping/pong消息进行信息交换,包含了当前实例和部分其他实例的状态信息以及本实例的slot bitmap 如果盲目的增加实例数量会导致集群间通信量增加 挤占了正常请求的带宽 每个实例都要保存完整的集群路由信息,每多一个 阅读全文
posted @ 2021-04-14 10:27 rudynan 阅读(110) 评论(0) 推荐(0) 编辑
摘要:数据倾斜的原因: 1. 存在bigkey - 业务层避免bigkey - 将集合类型的bigkey拆分为多个小集合 2. slot手工分配不均 3. hashtag 导致数据分配到同一个slot - 避免使用hashtag 访问倾斜的原因: 1. 存在热点数据 - 如果是只读数据,可以使用多副本 k 阅读全文
posted @ 2021-04-14 09:57 rudynan 阅读(830) 评论(0) 推荐(0) 编辑
摘要:await方法: 1. 线程中断之后再调用await会直接抛异常 2. 将当前线程包装成一个node放入条件队列中 如果条件队列的尾节点是取消状态 当前线程会把所有取消状态的节点在条件队列中出队 3. 完全释放锁 4. 判断如果当前node是在条件队列中的话就挂起当前线程等待被signal被唤醒 5 阅读全文
posted @ 2021-04-13 22:30 rudynan 阅读(59) 评论(0) 推荐(0) 编辑
摘要:当主库宕机之后,从库可以处理读请求,但是写请求无法处理 这时就需要进行主从迁移,那么主从迁移有几个问题需要解决 1. 如何确认主库是真的挂了 2. 该选择哪个从库升级为主库 3. 怎么通知其他从库 主库被替代了 redis 哨兵模式解决了上面的问题 哨兵是一个运行在redis中的一个进程,主要负责 阅读全文
posted @ 2021-04-12 11:15 rudynan 阅读(78) 评论(0) 推荐(0) 编辑
摘要:ReentrantLock类的两个核心方法 lock 调用的AQS的 acquire方法 unlock 调用的AQS的 realse方法 lock方法执行流程 1. 上来先去尝试抢占锁 如果阻塞队列中没有node等待 获取成功直接返回 2. 加锁失败(阻塞队列前有node) 会把当前线程封装成nod 阅读全文
posted @ 2021-04-01 22:13 rudynan 阅读(48) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示