mysql
csucoderlee
这个作者很懒,什么都没留下…
展开
-
mysql5.7升级到mysql8.0遇坑
mysql5.7升级到mysql8.0发现生产环境服务会报错Error querying database. Cause: java.sql.SQLSyntaxErrorException: FUNCTION GeomFromText does not exist在MySQL 8.0中,`GeomFromText`函数已经被弃用,取而代之的是`ST_GeomFromText`函数。你可以将你的查询从`GeomFromText`更新为`ST_GeomFromText`。这是因为MySQL 8.0引入原创 2024-06-20 12:54:23 · 467 阅读 · 0 评论 -
用sql教你什么是mysql的四种隔离级别
事务的基本要素A 原子性、C 一致性、I 隔离性、D 持久性。事务并发产生的问题脏读,不可重复读幻读mysql事务隔离级别读未提交 read-uncommitted读已提交 RC read-committed可重复读 RR repeatable-read (mysql默认的隔离级别为 RR)串行化 serializable读未提交事务A读取到了事务B未提交的数据。首先,在开启两个query的窗口,都执行下面的两行sql-- 先执行下,可以看到mysq原创 2020-09-18 00:04:54 · 1930 阅读 · 2 评论 -
mysql为什么不建议使用订单号或者其他形式的业务单号作为主键?
mysql为什么不建议使用订单号或者其他形式的业务单号作为主键?目前我们电商平台的订单号,或者其他业务单号,为了保证唯一,多数都选择的是雪花算法snowflake或者其他变种来生成的。生成分布式电商业务唯一id的实现,可以参考:https://tech.meituan.com/2017/04/21/mt-leaf.html美团点评的这篇博客,这篇博客基本涵盖了目前所有的方式方法。但是...原创 2019-11-16 22:09:52 · 2359 阅读 · 2 评论 -
记一次mysql删除大量数据的优化
最近工作中,遇到了要删除一些相关库的数据信息,涉及的数据有点多。实际场景是这样的,公司的一个电商项目,电商为卖家准备了报表的相关数据,报表业务在实现时,将一些订单信息冷库备份到报表的库中,然后再在报表的库中进行相关的报表相关业务的计算。由于项目起步时间晚,客户留存率不高,就遗留了相当大的一部分流失用户的数据,现在,开始着手删除这些已经不再使用系统的客户的历史数据。数据库中做了分表将相关原创 2017-06-05 15:44:32 · 18159 阅读 · 3 评论 -
高并发重复插入数据的场景之一
场景:淘宝平台推送退款工单时,会在工单状态变更时,再次推送来更新工单数据。但是会出现状态A退款工单推送过来,立马变更状态A为状态B,会再次推送该条状态B的工单,B进来首先查找系统中是否有该条工单,而这时状态A的工单还没有完成插入的逻辑,状态B会认为之前这笔工单没有推送过,会直接执行插入的逻辑,这就导致插入了重复数据。这里最初的实现方式,实际上就可以算作是数据库乐观锁的方式,乐观的认为数据每次插...原创 2017-08-11 10:31:32 · 3752 阅读 · 0 评论 -
NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP的细节
`gs_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '数据库最后更新时间'搞了大半年,才因为某些业务的问题,发现这么个隐藏点。NOT NULL DEFAULT CURRENT_TIMESTAMP, 这句话就不用参与下面的讨论了, 这个字段不为空,如果新增的时...原创 2018-05-07 15:23:19 · 12946 阅读 · 2 评论 -
mysql innodb锁与索引
目前公司购买的是阿里云的rds服务,旗舰版的顶配目前是2000个G,我负责的数据模块有自己的一个库,这个库中只有数据相关的内容。容量已经超过当前配置容量的85%。生产环境的mysql配置的innodb引擎存储引擎,隔离级别为RC。所以,接下来汇总下,我的一些对mysql的一些理论和经验。MVCC 并发控制协议 vs 基于锁的并发控制innodb实现的是基于多版本的并发控制协议(Mu...原创 2018-08-06 01:51:56 · 1490 阅读 · 0 评论 -
innodb体系结构
mysql是被设计为一个单进程多线程架构的开源数据库。可以说mysql的架构是插件式的存储引擎架构,区别于其他数据库最重要的一个特点就是其插件式的表存储引擎。mysql提供了一系列预定义的存储引擎编程接口,开发人员通过这些预定义的接口,可以实现自己的存储引擎。MySQL数据库的体系结构如下:而innodb是mysql被使用的最多的存储引擎之一,其特点就是行锁,支持事务,适用于OLTP(...原创 2018-08-12 12:45:40 · 2448 阅读 · 0 评论