随笔分类 -  MySql

摘要:最近项目中某个模块稳定复现MySQL死锁问题,本文记录死锁的发生原因以及解决办法。 1. 预备知识 1.1 表锁和行锁 表锁 表锁是MySQL中最基本的锁策略,并且是开销最小的策略。表锁会锁定整张数据表,用户的写操作(插入/删除/更新)前,都需要获取写锁(写锁会相互阻塞);没有写锁时,读取用户才能获 阅读全文
posted @ 2021-05-14 09:47 从此寂静无声 阅读(2454) 评论(0) 推荐(1)
摘要:概要 回顾以前写的项目,发现在规范的时候,还是可以做点骚操作的。 假使以后还有新的项目用到了MySQL,那么肯定是要实践一番的。 为了准备,创建测试数据表(建表语句中默认使用utf8mb4以及utf8mb4_unicode_ci,感兴趣的读者可以自行搜索这两个配置): sql CREATE TABL 阅读全文
posted @ 2019-10-31 20:16 从此寂静无声 阅读(499) 评论(0) 推荐(0)
摘要:此题有两个解法: 我初步尝试用以下 解决问题(要删除的记录 肯定大于相同内容的 ): 但是无法通过,究其原因是在 语句中, 与`DELETE`操作不能同时存在. 答案一 因此尝试新的解法,直接使用删除语句,结果如下所示: 此答案通过测试,但是效率较低. 答案二 后续思考中发现,可以使用临时表解决 与 阅读全文
posted @ 2019-10-13 17:34 从此寂静无声 阅读(472) 评论(1) 推荐(1)
摘要:此题的难度在于,选择部门的前三位高工资人员(注意,允许并列人员的存在)。 分析题目: 存在两张表,则肯定需要使用 ; 需要选取相同部门的前三名,原本想使用 以及 ; 然而 以及 无法满足并列前三名的要求,因此,只能对同张表使用 ,如果某个薪水满足 小于三个,则此人薪水在部门前三; 综上所述,答案如下 阅读全文
posted @ 2019-10-10 14:01 从此寂静无声 阅读(300) 评论(0) 推荐(2)
摘要:此题,竟然一时间没想到如何合理的解决方案,主要是有较长的时间没有使用 与`NOT IN`. 也是一个手熟的活,需要经常锻炼,以下是解题答案: PS: 如果您觉得我的文章对您有帮助,请关注我的微信公众号,谢谢! 阅读全文
posted @ 2019-10-10 10:46 从此寂静无声 阅读(225) 评论(0) 推荐(2)
摘要:以前使用 ,都是局限于单个数值使用,从未尝试过多个数据使用 . 此题涉及两个表,肯定需要使用 操作. 此外,需要选取每个 的最大数值,那么肯定涉及 以及 操作. 综合以上因素,答案如下所示: 阅读全文
posted @ 2019-10-10 10:44 从此寂静无声 阅读(245) 评论(0) 推荐(2)
摘要:题意:查找表中重复的 . 此题是很典型的对分组结果进行统计筛选例题,因此可以利用 进行分组,然后使用 统计. 此处,对 与`group by`进行比较(引用自:): 后不能跟聚合函数,因为 执行顺序大于聚合函数。 子句的作用是在对查询结果进行分组前,将不符合 条件的行去掉,即在分组之前过滤数据,条件 阅读全文
posted @ 2019-10-09 17:17 从此寂静无声 阅读(276) 评论(0) 推荐(2)
摘要:这种单表比较条件,一般都是表内进行 操作. 参照此思路,解题如下所示: 运行效率在可以接受的范围,此外语句也较为清晰便于维护. 阅读全文
posted @ 2019-10-09 15:47 从此寂静无声 阅读(230) 评论(0) 推荐(2)
摘要:题意:求表中连续出现3次以上的数据. 因此,根据题意构造第一版本答案(使用连续的ID进行比较): 当前版本答案通过了测试,但是运行效率太低了. 分析原因,可能与 条件相关,当 为0时, 1不会寻找到相关数据,导致 执行缓慢. 因此,修改为如下所示: 此版本,效率得到了巨大的提高。 PS: 如果您觉得 阅读全文
posted @ 2019-10-09 15:05 从此寂静无声 阅读(195) 评论(0) 推荐(2)
摘要:此题,其本质就是赋值行号(需要注意分数相同的情景). 在实践过程中,初版答案如下所示: 此处,使用 来统计行号,注意使用 来区分相同分数. 但是,此解题方案的效率较差, 运行肯定是越快越好. 因此,在 中引入变量来赋值行号,以替代耗时的 操作. 此处,查询是在 与临时表之间进行 . 此外,使用临时变 阅读全文
posted @ 2019-10-09 12:36 从此寂静无声 阅读(439) 评论(0) 推荐(2)
摘要:此题相较于 做了一些改进: 创建 ; 需要判断传入参数的合理性. 因此,对代码改动如下所示: mysql CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT BEGIN DECLARE P INT DEFAULT N 1; IF (P PS: 阅读全文
posted @ 2019-10-09 08:53 从此寂静无声 阅读(274) 评论(0) 推荐(2)
摘要:此题的难点是: 针对可能存在的重复数值,选出唯一的数值(使用 ); 选取第二个数值,则需要使用 确定数值; 查询的数值可能为不存在,此时就需要返回 (使用IFNULL). 答题如下所示: PS: 如果您觉得我的文章对您有帮助,请关注我的微信公众号,谢谢! 阅读全文
posted @ 2019-10-07 22:37 从此寂静无声 阅读(151) 评论(0) 推荐(2)
摘要:解题思路较为简单,使用 即可解决. 答案如下图所示: PS: 如果您觉得我的文章对您有帮助,请关注我的微信公众号,谢谢! 阅读全文
posted @ 2019-10-07 22:09 从此寂静无声 阅读(147) 评论(0) 推荐(2)
摘要:最近需要对某服务的数据库数据进行备份,因此参考网上教程完成数据库备份脚本. 因为服务的使用频率较低,因此设置定时任务,在每天的中午以及午夜时分进行备份操作. bash !/bin/bash 设置mysql的登录用户名和密码(根据实际情况填写) mysql_user=" " mysql_passwor 阅读全文
posted @ 2019-09-05 20:56 从此寂静无声 阅读(8146) 评论(0) 推荐(3)
摘要:设置mysql局域网访问,限制主机端口访问地址 阅读全文
posted @ 2019-02-21 18:02 从此寂静无声 阅读(1499) 评论(0) 推荐(1)
摘要:最近同事需要在单位提供的开发机上临时安装 等软件,时间紧迫,因此向其推荐安装福利 . 感谢 ,使得 软件 无比的快捷, 也是无与伦比的简单. gcc 7.3.1安装 注意事项: 安装 后,需要使用 启动 (`gcc 7.3.1`); 启动 后仅针对本次会话有效,若退出登陆或者下线重启后,需要再次激活 阅读全文
posted @ 2018-12-17 16:52 从此寂静无声 阅读(2098) 评论(0) 推荐(2)
摘要:项目中遇到存储的时间戳与真实时间 的现象,以下为解决步骤. 问题 sql CREATE TABLE ( int(11) NOT NULL AUTO_INCREMENT, timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, timestamp NULL DEFA 阅读全文
posted @ 2018-11-28 14:59 从此寂静无声 阅读(9618) 评论(6) 推荐(4)
摘要:解决mysql保留字引发错误 阅读全文
posted @ 2018-11-27 13:57 从此寂静无声 阅读(14316) 评论(0) 推荐(2)