摘要: 分享遇到过的一种间隙锁导致的死锁案例。文后有总结知识供参考 日志出现:Deadlock found when trying to get lock; try restarting transaction 导致原因:并发导致的数据库间隙锁死锁(MySql数据库默认RR级别) 业务主要操作提炼:首先进来 阅读全文
posted @ 2022-03-11 15:09 王李峰 阅读(1276) 评论(0) 推荐(0) 编辑
摘要: 【开发】SQL优化思路(以oracle为例) powered by wanglifeng https://www.cnblogs.com/wanglifeng717 单表查询的优化思路 单表查询是最简单也是最重要的模块,它是多表等查询的基础。 避免对数据重复扫描 能一次扫描拿到的数据,不要重复扫描, 阅读全文
posted @ 2022-01-26 16:40 王李峰 阅读(691) 评论(1) 推荐(1) 编辑
摘要: SQL编写规约 SQL编写总原则 声明: 在没有把握或者根本没意识时,遵守规约可以保障你的程序不会“越界”。 所以规约并不代表一种最优方案或者某种教条。 当你相当有把握,明确知道自己在做什么的时候,请读者使用自己以为合适的SQL,且时刻准备为你的SQL负责。 无论是单表查询还是多表联查,不许有大结果 阅读全文
posted @ 2022-01-26 16:19 王李峰 阅读(492) 评论(0) 推荐(0) 编辑
摘要: 问题: 传统的select * from table 存在以下几个问题: 1.字段含义及“魔法数字”需要另开窗口对照查看,例如status有1,2,3,4,5 2.外键字段引用的是对方表的id,要知道id对应信息,需要另开窗口查询,或者写跨表联查语句。例如:该订单对应的合作方具体信息是什么 3.该记 阅读全文
posted @ 2022-01-24 16:35 王李峰 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 问题: 项目中目前使用mybatis操作数据库,使用插件(mybatis-generator)自动生成代码,对于增改查,使用存储过程实现了一版本,方便使用。 insert代码生成器用法: insert_code_generator( in_var_tbl_name [要插入的表名] ) 1 DROP 阅读全文
posted @ 2022-01-24 15:26 王李峰 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 问题: 开发时有时候需要对很多表进行操作。 例如:清空(删除)所有(某些)表,删除所有表某时间点之后导入的数据(类似于回滚) 解决方式: 对选定的表集合执行相同的查询条件(可为空),如果这个执行结果大于阈值,则使用相同的条件组建delete语句。 delete_drop_sql生成器用法: dele 阅读全文
posted @ 2022-01-24 14:05 王李峰 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 问题: 1.如何配置数据库数据: 方式一:图形界面点击输入数据,导出成sql。 缺点:表多,数据多的时候非常繁琐,字段含义需要另外开窗口对照。 方式二:徒手写或者修改已有语句:insert table_name ('','','','') values ('','','','') 。 缺点:字段多的 阅读全文
posted @ 2022-01-24 11:38 王李峰 阅读(383) 评论(0) 推荐(0) 编辑
摘要: 问题: mysql日常开发过程中,数据库、表的很多信息分散在不同的工具和不同的界面中,来回切换查找非常麻烦。 解决方式: 基于这个问题,写了一个存储过程,将这些日常需要的信息集合在一个存储过程中,查询起来非常方便。 工具合集中写了其他存储过程的调用方式和说明,为的是方便解决其他问题,后续分享这些问题 阅读全文
posted @ 2022-01-24 10:11 王李峰 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 分享下,工作过程中数据库相关工作的流程: 1.接到产品需求,根据需求进行领域模型设计 主要识别有哪些实体及关系、相关方及角色。例如:A既是服务提供方也可以是业务提供方甚至同时是接入方。他们在模型上是要考虑的。 2.在navicat -> 模型工具栏中,利用图形化页面进行拖拽表进行物理模型的设计 3. 阅读全文
posted @ 2022-01-24 09:08 王李峰 阅读(392) 评论(0) 推荐(0) 编辑