MySQL
qq_35640866
这个作者很懒,什么都没留下…
展开
-
redis和mysql数据一致性方案
场景:先删除Redis,再更新 MySQL,不主动更新Redis,访问redis 没有数据,再访问MySQL 把数据回写到Redis。在高并发情况下,如果请求 A 在更新MySQL 时卡了一会,请求 B 已经依次完成数据的更新,就会出现图中的问题。在高并发情况下,如果请求 A 在写 Redis 时卡了一会,请求 B 已经依次完成数据的更新,就会出现图中的问题。对于上面这种情况,对于第一次查询,请求 B 查询的数据是 10,但是 MySQL 的数据是 11,对数据一致性比较敏感的服务可以采用这个方案。原创 2024-04-25 20:04:40 · 461 阅读 · 0 评论 -
手机号是用bigint还是用varchar存储
bigint从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。19位数字对于无符号 BIGINT 类型,取值范围为 0 到 18446744073709551615。20位数字。int一个正常大小整数。原创 2024-03-20 10:27:35 · 643 阅读 · 0 评论 -
mysql5.7 BLOB, TEXT, GEOMETRY or JSON can‘t have a default value
在MySQL 8.0.13之后包括( 8.0.13) BLOB, TEXT, GEOMETRY, and JSON data types 不能配置表达式的默认值。在MySQL 8.0.13之后 BLOB, TEXT, GEOMETRY, and JSON data types 不能直接配置非null 默认值。在MySQL 8.0.13版本, 之前 BLOB, TEXT, GEOMETRY, and JSON 不能配置非null 的默认值,包括表达式。mysql 5.7 创建text字段的时候,报错。原创 2024-03-15 14:13:14 · 998 阅读 · 0 评论 -
mac 安装percona-toolkit
mac 安装percona-toolkit。原创 2024-03-06 21:01:33 · 414 阅读 · 0 评论 -
mac 安装percona-toolkit
mac 安装percona-toolkit。原创 2024-03-06 14:38:13 · 401 阅读 · 0 评论 -
mysql批量导出库表结构
【代码】mysql批量导出库表结构。原创 2024-01-09 17:44:16 · 436 阅读 · 0 评论 -
数据库备份规范
每天备份一次,保留7天的备份,超过7天的备份包括binlog上传到s3存储上。rds 开启 binlog_rows_query_log_events参数,binlog会记录真实执行的sql语句,方便故障排查。redis 缓存后端要有MySQL数据做数据备份,保障在redis故障的时候,可以从MySQL加载数据。一级产品数据备份需要保留1年,二级产品备份需要保留30天,三级产品备份要求7天。根据不通的备份方式,每季度进行一次恢复演练,记录数据大小,恢复时长。redis数据每天备份一次,保留7天。原创 2024-01-05 17:17:29 · 615 阅读 · 0 评论 -
sql语句优化id排序影响索引正确选择
优化起没选择这个索引,走了主键查询,用时14秒,虽然强制使用索引,也可以使用这个索引, 但是需要修改索引。优化器没选择这个索引,是任务走主键可以减少排序,并且只limit 10行数据。添加一下索引, 加上id。优化器选择了 添加了索引,没走主键查询。原创 2023-12-06 17:50:14 · 415 阅读 · 0 评论 -
mysql binlog日志同步方案
转载 2023-11-30 21:32:21 · 42 阅读 · 0 评论 -
replace into 主键冲突,并且事务不退出。
因为 AUTO_INCREMENT=2601424 比表里面的最大值2601455 小所以replace 插入数据会报 主键冲突。原创 2023-11-14 21:59:50 · 90 阅读 · 0 评论 -
ON DUPLICATE KEY UPDATE 自增键有冲突的数据也会增加 auto-increment值
原因是为了性能,在insert XXX ON DUPLICATE KEY UPDATE时,会直接分配N个自增id给该sql,而不是根据实际插入的记录来分配自增id。insert into XXX values( 记录1,记录2,记录3,记录4,。参见文档:https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html。插入记录时,即使所有的记录都命中了ON DUPLICATE KEY UPDATE,也会导致自增键增加N。原创 2023-11-08 14:19:28 · 109 阅读 · 0 评论 -
sql批量insert 语句其中部分语句失败处理方法
为了避免主键冲突导致整个插入操作失败,我们可以使用INSERT IGNORE或者INSERT INTO …ON DUPLICATE KEY UPDATE或者replace into语句。当使用批量插入语句时,如果存在主键冲突,MySQL会抛出Duplicate entry ‘value’ for key 'PRIMARY’的异常,其中value表示引发冲突的主键值。如果存在primary or unique相同的记录,则先删除掉。这种sql 如果其中一条sql执行失败, 整条直线语句回回滚失败。原创 2023-11-01 14:52:51 · 979 阅读 · 0 评论 -
阿里云dms历史数据清理过程
dms 历史数据清理, xxx_history_detail_0476 保留35天的数据。sql语句原始语句DELETE FROM `xxx_history_detail_0476` WHERE `gmt_create` < SUBDATE(CURDATE(),INTERVAL 35 DAY);如果gmt_create 没有索引,执行过程如下LOGexplain SELECT 1 from (SELECT `gmt_create` FROM `db_sc_xxx_score_14`.`xx原创 2023-08-17 11:02:26 · 157 阅读 · 1 评论 -
分布式数据库 分页内部处理方法
结果可能不是你想要的数据。例如下面的截图, 正确的结果应该是 95 90.但是最终结果是 85 80。如果只有一个sharding 分片, 直接在这个sharding执行这个语句,结果是满足需求的。假设语句是limit 10000, 10,需要在每个分片上执行 limit 0,10010。在每个分片上执行 LIMIT m, n 转换成 LIMIT 0,m+n,然后在归并排序。如果是两个分片, 在每个分片上执行相同的语句,然后在合并数据,按照排序规则取10条数据。原创 2023-08-10 19:55:26 · 98 阅读 · 1 评论 -
mysql select 查询if 判断用例
如果c.price 为null 赋值为0, 如果不为null , 保留小数点后2位。如果b.price= 0 赋值为1 ,如果b.price,赋值为1。原创 2023-08-08 10:59:42 · 241 阅读 · 0 评论 -
MySQL 主从复制 配置ddl_exist_errors 坑
MySQL 主从复制 配置ddl_exist_errors 坑1、用途2、参数配置3、模拟场景从库配置跳过主键错误模拟删除一个不存在的表造成扩展数据库版本5.7.22-log MySQL Community测试参数ddl_exist_errors1、用途跳过主从复制错误,比如主键冲突,修改的数据不存在,删除表不存在等,避免造成主从复制中断。2、参数配置slave_skip_errors选项有四个可用值,分别为:off、all、ErorCode、ddl_exist_erro原创 2020-05-19 20:53:04 · 1116 阅读 · 1 评论