
数据库
文章平均质量分 93
荒野大码农
仰之弥高,钻之弥坚
展开
-
MySQL中的四种事务隔离级别
对于两个并发执行的事务,如果涉及到操作同一条记录的时候,可能会发生问题。因为并发操作会带来数据的不一致性,包括脏读、不可重复读、幻读等。数据库系统提供了隔离级别来让我们有针对性地选择事务的隔离级别,避免数据不一致性的问题。SQL标准定义了4种隔离级别,分别对应可能出现的数据不一致情况:隔离级别脏读不可重复读幻读read uncommitted(读未提交)yesyesyesread committed(读提交)-yesyesrepeatable read(可原创 2021-06-12 13:43:26 · 695 阅读 · 1 评论 -
MySQL中Limit性能优化的方案
在MySQL中Limit有两种语法:limit offset, rowslimit rows其中offset表示偏移量,rows表示要返回的记录条数。比如我们要查出第1000到第1010行的记录,就会写成 limit 999, 10 。一般我们在实际开发中做分页查询的时候,rows不会太大,因为rows表示每页要显示的数量(你总不可能每页要显示个几万条吧)。而随着页数的加深,offset就会变大,查询效率随之就变慢了。为什么当offset很大时,查询效率会变慢呢?比如当我们用 limit 10原创 2020-08-10 14:31:20 · 8671 阅读 · 7 评论 -
MySQL5.7和8.0中in和exists关键字
之前看了网上很多关于in和exists性能相关的博客,但总感觉自己测试的结果和他们说的不太一样,所以写下这篇博客,记录下自己测试后得出的总结。特别强调,MySQL5.7和8.0中对这两个关键字有不同的优化,所以我要分开两个版本来讨论。数据准备我准备了一张tb_class表和一张tb_stu表注:600个班级,12万个学生。tb_stu是大表,tb_class是小表。为了避免索引优化带来的影响,所以我两张表的id都没有设置主键和索引。MySQL5.7测试测试查询效率我们首先测试一下当外层表时小原创 2020-07-11 18:03:42 · 1938 阅读 · 1 评论 -
MySQL的存储过程中使用游标来接收查询结果集
我们如果要在MySQL的存储过程中遍历一个查询语句的结果集,需要使用到游标cursor(SQL server中可以定义表类型的变量Table,但MySQL中不行,只能用游标)。假设我需要从 tb_stu 这张表中查询出所有记录插入到tb_stu_copy1中,等价于insert into tb_stu_copy1 select * from tb_stu;以下是存储过程的具体sqlCREATE PROCEDURE curdemo () BEGIN DECLARE stop_flag INT DE原创 2020-06-18 09:59:38 · 2719 阅读 · 0 评论 -
SQL server中将传入的字符串按照特定的分隔符拆分转为一列
效果如下:下面贴上存储过程的代码,大家可以自行复制过去创建存储过程CREATE Function [dbo].[GetTableFromText](@ParaContext varchar(max),@splitChar char) returns @ReturnTable table(ResultColumn varchar(200))asBegin Declare @startI...原创 2019-12-29 10:45:49 · 776 阅读 · 0 评论 -
Mysql配置主从同步并在Java代码中实现自动读写分离
配置Mysql主从同步为了配置Mysql的主从同步,首先需要两个安装了Mysql的主机。我自己有两台阿里云的Linux服务器,IP分别为:118.xx.xx.211106.xx.xx.56(为了保护的我服务器免受攻击,所以不方便公开IP的全部地址。没有阿里云服务器的小伙伴也可以在电脑上开两个虚拟机并安装好Mysql,效果也是一样的)我们以118.xx.xx.211的服务器为Mysql...原创 2019-12-09 17:24:47 · 2133 阅读 · 1 评论 -
maven项目引入sqljdbc4 找不到包的解决方案
看这篇博客转载 2018-09-26 10:11:59 · 4857 阅读 · 4 评论 -
JDBC调用SQL server的存储过程没有返回结果集的解决方法
。原创 2019-03-06 21:01:05 · 2847 阅读 · 1 评论 -
关于sql中子查询not in 后面不能为null的理解
平时在sql查询中都要注意not in后面的条件中不能有null,如果有null就没有返回结果了,而in后面有null依然可以有返回结果。说下我的理解:in后面的子句可以理解为or拼接比如select * from t_student where height in(175, 177, null)后面的height in (175, 177, null)可以理解为height =175...原创 2019-11-14 09:31:47 · 739 阅读 · 1 评论