随笔分类 -  sql

摘要:悲观锁(Pessimistic Lock) 悲观锁是基于数据库层面的锁, 就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block阻塞。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,写锁等,都是在做操作之前先上锁。 一个典型 阅读全文
posted @ 2020-09-11 12:03 泥土里的绽放 阅读(176) 评论(0) 推荐(0) 编辑
摘要:SELECT COUNT(DISTINCT column(s)) FROM table // 先group by,然后select,然后order byselect xxx from xxx where xxx and xxxx group by homework_id order by num d 阅读全文
posted @ 2020-08-03 10:16 泥土里的绽放 阅读(57) 评论(0) 推荐(0) 编辑
摘要:insert into player_count(player_id,count,name) value(1,1,”张三”) on duplicate key update count= 2,name=”张三”; 阅读全文
posted @ 2020-07-24 17:18 泥土里的绽放 阅读(1362) 评论(0) 推荐(0) 编辑
摘要:数据库跟缓存,或者用Mysql和Redis来代替,想必每个CRUD boy都不会陌生。本文要聊的也是一个经典问题,就是以怎样的方式去操作数据库和缓存比较合理。 在本文正式开始之前,我觉得我们需要先取得以下两点的共识: 缓存必须要有过期时间 保证数据库跟缓存的最终一致性即可,不必追求强一致性 为什么必 阅读全文
posted @ 2020-05-13 18:35 泥土里的绽放 阅读(415) 评论(0) 推荐(0) 编辑
摘要:一.MySQL Binlog格式介绍 mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW! 查看binlog的格式的脚本: 二、binlog 的不同模式有什么区别呢? 1.Statement:每一条会修改数据的sql都会记录在binlog中。 优点:不需要记录每 阅读全文
posted @ 2020-05-06 09:59 泥土里的绽放 阅读(693) 评论(0) 推荐(0) 编辑
摘要:说实话,这个问题可以涉及到 MySQL 的很多核心知识,可以扯出一大堆,就像要考你计算机网络的知识时,问你“输入URL回车之后,究竟发生了什么”一样,看看你能说出多少了。 之前腾讯面试的实话,也问到这个问题了,不过答的很不好,之前没去想过相关原因,导致一时之间扯不出来。所以今天,我带大家来详细扯一下 阅读全文
posted @ 2020-05-05 17:45 泥土里的绽放 阅读(252) 评论(0) 推荐(0) 编辑
摘要:exist & in 优化 SELECT * from A WHERE id in ( SELECT id from B ) 复制代码 SELECT * from A WHERE id EXISTS ( SELECT 1 from A.id= B.id ) 复制代码 分析: in 是在内存中遍历比较 阅读全文
posted @ 2020-05-04 22:57 泥土里的绽放 阅读(388) 评论(0) 推荐(0) 编辑
摘要:声明由于贴mysql截图会占太大篇幅,影响整体阅读理解,所以没有贴mysql截图,但是下面步骤都是亲自试验过的 四种隔离级别(由低到高)Read Uncommitted读未提交:可以看到其他事务未提交的内容Read Committed读已提交:可以看到其他事务已提交读内容Repeatable Rea 阅读全文
posted @ 2020-05-04 22:18 泥土里的绽放 阅读(492) 评论(0) 推荐(0) 编辑
摘要:你需要知道的之前我们介绍了排他锁,其实innodb下的记录锁(也叫行锁),间隙锁,next-key锁统统属于排他锁。 行锁记录锁其实很好理解,对表中的记录加锁,叫做记录锁,简称行锁。 生活中的间隙锁编程的思想源于生活,生活中的例子能帮助我们更好的理解一些编程中的思想。生活中排队的场景,小明,小红,小 阅读全文
posted @ 2020-05-04 21:53 泥土里的绽放 阅读(1077) 评论(0) 推荐(0) 编辑
摘要:我们在编写一个查询语句的时候 SELECT DISTINCT < select_list > FROM < left_table > < join_type > JOIN < right_table > ON < join_condition > WHERE < where_condition > 阅读全文
posted @ 2020-05-04 00:05 泥土里的绽放 阅读(354) 评论(0) 推荐(0) 编辑
摘要:MySQL 常见的存储引擎,可以使用 SHOW ENGINES 复制代码 命令,来列出所有的存储引擎 可以看到,InnoDB 是 MySQL 默认支持的存储引擎,支持事务、行级锁定和外键。 MyISAM 存储引擎的特点 在 5.1 版本之前,MyISAM 是 MySQL 的默认存储引擎,MyISAM 阅读全文
posted @ 2020-05-03 23:44 泥土里的绽放 阅读(194) 评论(0) 推荐(0) 编辑
摘要:MySQL 基础架构 这道题应该从 MySQL 架构来理解,我们可以把 MySQL 拆解成几个零件,如下图所示 大致上来说,MySQL 可以分为 Server层和 存储引擎层。 Server 层包括连接器、查询缓存、分析器、优化器、执行器,包括大多数 MySQL 中的核心功能,所有跨存储引擎的功能也 阅读全文
posted @ 2020-05-03 23:43 泥土里的绽放 阅读(113) 评论(0) 推荐(0) 编辑
摘要:关于索引:由于索引需要额外的维护成本,因为索引文件是单独存在的文件,所以当我们对数据的增加,修改,删除,都会产生额外的对索引文件的操作,这些操作需要消耗额外的IO,会降低增/改/删的执行效率。所以,在我们删除数据库百万级别数据的时候,查询MySQL官方手册得知删除数据的速度和创建的索引数量是成正比的 阅读全文
posted @ 2020-05-03 23:24 泥土里的绽放 阅读(2177) 评论(0) 推荐(0) 编辑
摘要:在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论MyISAM和InnoDB两个存储引擎的索引实现方式。 MyISAM索引实现 MyISAM引擎使用B+Tree作为索引结构。 MyISAM会按照数据插入的顺序分配行号,从0开始,然后按照数据插入的顺序存储在 阅读全文
posted @ 2020-05-03 23:17 泥土里的绽放 阅读(758) 评论(0) 推荐(0) 编辑
摘要:Mysql innoDB日志 Mysql innoDB有两个日志模块:redolog 和 binlog 咱们先看一下redolog。 redolog中文来讲就是重做日志,它有什么用呢?如果每次你的更新或者插入都写入磁盘的话那这个IO成本就比较大了,所以InnoDB就把记录先记录在redolog中,并 阅读全文
posted @ 2020-05-03 16:52 泥土里的绽放 阅读(439) 评论(0) 推荐(0) 编辑
摘要:事前准备 为了故事的顺利发展,我们需要创建一个表: CREATE TABLE t ( id INT PRIMARY KEY, c VARCHAR(100) ) Engine=InnoDB CHARSET=utf8; 然后向这个表里插入一条数据: INSERT INTO t VALUES(1, '刘备 阅读全文
posted @ 2020-05-03 16:25 泥土里的绽放 阅读(185) 评论(0) 推荐(0) 编辑
摘要:前言 在分布式系统中,缓存和数据库同时存在时,如果有写操作的时候,先操作数据库还是先操作缓存呢? 先思考一下,可能会存在哪些问题,再往下看。下面我分几种方案阐述。 缓存维护方案一 假设有一写(线程A)一读(线程B)操作,先操作缓存,在操作数据库,如下流程图所示 1)线程A发起一个写操作,第一步del 阅读全文
posted @ 2020-05-03 14:56 泥土里的绽放 阅读(487) 评论(0) 推荐(0) 编辑
摘要:6、union(合并表) UNION 操作符用于合并两个或多个 SELECT 语句的结果集。 我们将上面建好的两张表用来union 注意了,他们的列名称不一样,我们union看看 select * from boy union select * from girl;复制代码 union的结果集就当作 阅读全文
posted @ 2020-04-28 18:47 泥土里的绽放 阅读(169) 评论(0) 推荐(0) 编辑
摘要:Redis只在两个地方用到了跳跃表,一个是实现有序集合键(zset),另一个是在集群节点中用作内部数据结构,除此之外,跳表在Redis里面没有其他用途。 但是为什么用跳表而不用红黑树呢?猜想如下:1)在做范围查找的时候,平衡树比skiplist操作要复杂。在平衡树上,我们找到指定范围的小值之后,还需 阅读全文
posted @ 2020-04-22 13:29 泥土里的绽放 阅读(4353) 评论(0) 推荐(1) 编辑
摘要:摘自: 写SQL语句的时候我们往往关注的是SQL的执行结果,但是是否真的关注了SQL的执行效率,是否注意了SQL的写法规范? 以下的干货分享是在实际开发过程中总结的,希望对大家有所帮助! 1. limit分页优化 当偏移量特别大时,limit效率会非常低。 SELECT id FROM A LIMI 阅读全文
posted @ 2020-04-22 10:15 泥土里的绽放 阅读(320) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示