故障案例 | 慢SQL引发MySQL高可用切换排查全过程
作者:梁行万里数据库DBA,擅长数据库性能问题诊断、事务与锁问题的分析等,负责处理客户MySQL日常运维中的问题,对开源数据库相关技术非常感兴趣。 一、现象说明 在排查问题时发现MySQL主备做了切换,而查看MySQL服务是正常的,DBA也没有做切换操作,服务器也无维护操作,万幸的是业务还没有受到大的波及。这到底是是为什么呢? 假设原主服务器地址为:172.16.87.72,原备主服务器地址为:1
mysql设置Decimal的最小值
MySQL是一个非常流行的关系型数据库管理系统,它提供了灵活的数据存储和管理功能。在MySQL中,通过使用Decimal数据类型,可以存储任意长度的定点数,这对于一些应用场景非常有用。但是,在使用Decimal数据类型时,需要注意设置最小值,避免出现精度问题。 要设置Decimal的最小值,需要在创建表的时候指定精度和小数点位数,例如: CREATE TABLE example ( id INT
数据库跟缓存的双写一致性怎么理解
数据库跟缓存的双写一致性怎么理解 在数据库和缓存之间实现双写一致性的主要方法有两种: 第一种方法是在数据库提交更新之前,先将更新写入缓存。这样做的好处是能够最大化地利用缓存的性能优势,但是如果数据库提交失败,缓存中的数据就会与数据库不一致。 第二种方法是在数据库提交更新之后,再将更新同步到缓存。这样做的好处是能够保证数据的一致性,但是会导致缓存的性能不能充分发挥。 为了兼顾数据一致性和性能,一般会
关于JAVA分页新知识
DBA 讨厌JAVA分页插件,随手写个分页代码 昨天我写了个分页服务类,今天发到群里,JAVA同事说,他开发个新分页插件,不会调用COUNT(). 他说在JAVA拦截器做! 我们发现个非常特别的MYSQL函数 SELECT SQL_CALC_FOUND_ROWS FROM TABLE_A WHERE A.ID=? ....
测试验证一下字段有空值的时候,是否字段+常量的方式可优化
解析: 索引中不保存索引列全为空的记录,所以,仅仅在C1列上创建索引是没有作用的。创建由(C1,‘1’)构建的复合索引,由于存在常量‘1’,所以,无论C1列的值是否为空,其均可出现在索引中,并且该索引会被该SQL所使用。另外几种方法,虽然也可以达到类似避免全表扫的,使用相对高效的索引的目的,但要么需要改写SQL,要么需要修改表中的记录值,要么索引的体积较大,且还存在其它列在其中,当该其它列更新时,