数据库
文章平均质量分 75
百里度
这个作者很懒,什么都没留下…
展开
-
数据库的事务隔离级别与传播行为
一、事务的特性(ACID)原子性(Atomicity):原子性是指一个事务中的操作,要么全部成功,要么全部失败,如果失败,就回滚到事务开始前的状态。一致性(Consistency):一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。那转账举栗子,A账户和B账户之间相互转账,无论如何操作,A、B账户的总金额都必须是不变的。隔离性(Isolation):隔离性是当多个用户 并发的 访问数据库时,如果操作同一张表,数据库则为每一个用户原创 2022-03-06 21:02:52 · 1339 阅读 · 0 评论 -
mysql锁的分类
共享锁(S Lock)共享锁又称为读锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到最新数据。1、多个事务的查询语句可以共用一把共享锁;2、如果只有一个事务拿到了共享锁,则该事务可以对数据进行 UPDATE DETELE 等操作;3、如果有多个事务拿到了共享锁,则所有事务都不能对数据进行 UPDATE DETELE 等操作。加锁方式:select…lock in share mode排它锁(X Lock)排他锁又称为写锁,简称X锁,顾名思义,排它锁不能与其它原创 2022-03-06 17:51:07 · 1009 阅读 · 0 评论 -
mysql 间隙锁
一、什么是间隙锁?间隙锁(Gap Lock):锁加在不存在的空闲空间,可以是两个索引记录之间,也可能是第一个索引记录之前或最后一个索引之后的空间。当我们用范围条件而不是相等条件索引数据,并请求共享或排他锁时,InnoDB会给符合条件的已有数据记录的索引项枷锁;对于键值在条件范围内但并不存在的记录,叫做“间隙(GAP)”。InnoDB也会对这个“间隙”枷锁,这种锁机制就是所谓的间隙锁(Next-Key锁)。注意:可重复读级别下才会有间隙锁!二、解决的问题解决了mysql RR(可重复读)级别原创 2022-03-06 16:40:41 · 10761 阅读 · 11 评论 -
mysql 死锁问题 Lock wait timeout exceeded; try restarting transaction
Lock wait timeout exceeded; try restarting transactionmysql出现死锁并获取锁超时后,会出现上面的错误。解决步骤:我们可以通过到information_schema 中来进行查找被锁的语句。information_schema这张数据表保存了MySQL服务器所有数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。再简单点,这台MySQL服务器上,到底有哪些数据库、各个数据库有哪些表,每张表的字段类型是什么,各个数据库要什么权.原创 2021-12-10 15:20:15 · 2515 阅读 · 0 评论 -
查询连续3天登录的用户
一、创建表CREATE TABLE `log` ( `user_id` int(11) NOT NULL, `create_time` datetime(0) NULL DEFAULT NULL) ENGINE = InnoDB CHARACTER SET = gb2312 COLLATE = gb2312_chinese_ci ROW_FORMAT = Compact;INSERT INTO `log` VALUES (101, '2021-11-10 20:12:42');INSE原创 2021-11-28 22:18:33 · 3499 阅读 · 0 评论 -
java经典sql笔试题
一、 数据准备-- 学生表create table student( id varchar(50) not null comment '学号', name varchar(50) not null comment '姓名', birthday date not null comment '生日', sex varchar(20) not null comment '性别', primary key (id));-- 课程表create table cour原创 2021-01-15 11:49:22 · 1274 阅读 · 0 评论 -
MySQL与Oracle的区别
1.本质区别MySQL是轻量型数据库,并且免费,没有服务恢复数据。Oracle是重量型数据库,收费,Oracle公司对Oracle数据库有任何服务。2、存储上的区别与Oracle相比,MySQL没有表空间,角色管理,快照,同义词和包以及自动存储管理。3、事务MySQL默认是自动提交,而Oracle默认不自动提交,需要用户手动提交,需要在写commit;指令或者点击commit按钮。MySQL在innodb存储引擎的行级锁的情况下才可支持事务,而Oracle则完全支持事务。4、事务隔离级别M原创 2021-01-12 16:16:48 · 560 阅读 · 1 评论 -
索引优化详解
一、EXPLAIN做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划。下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据type列,连接类型。一个好的sql语句至少要达到range级别。杜绝出现all级别key列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式key_len列,索引长度rows列,扫描行数。该值是个预估值extra列,详细说明。注意常见的不太友好的值有:Using filesort, Using temporary二、原创 2020-08-02 16:24:05 · 6958 阅读 · 0 评论 -
索引概念详解
一、聚集(clustered)索引,也叫聚簇索引注:第一列的地址表示该行数据在磁盘中的物理地址,后面三列才是我们SQL里面用的表里的列,其中id是主键,建立了聚集索引。结合上面的表格就可以理解这句话了吧:数据行的物理顺序与列值的顺序相同,如果我们查询id比较靠后的数据,那么这行数据的地址在磁盘中的物理地址也会比较靠后。而且由于物理排列方式与聚集索引的顺序相同,所以也就只能建立一个聚集索引了。聚集索引实际存放的示意图从上图可以看出聚集索引的好处了,索引的叶子节点就是对应的数据节点(MySQL的My原创 2020-08-02 15:42:13 · 369 阅读 · 0 评论