数据库
文章平均质量分 75
予亭
活泼开朗,爱好广泛。
展开
-
mysql一些刁难的查询问题
1、SQL18 获取当前薪水第二多的员工的emp_no以及其对应的薪水salaryselect e.emp_no, s.salary, e.last_name, e.first_namefrom salaries as sjoin employees as e on e.emp_no = s.emp_nowhere s.salary = (select s1.salary from salaries as s1 join salaries as s2 on s1.salary <= s原创 2022-01-02 17:26:30 · 626 阅读 · 0 评论 -
mysql事务提交前,索引会更新吗
前言今天突然奇想,想着如果开启了一个事务,这个事务是修改一条数据记录的索引字段数据,那么这个事情索引会不会立马更新掉,还是等事务提交后再更新我的理解我理解是会立马更新的,因为一般来说除了串行化这种隔离级别,其他隔离级别都是支持并行的,某种程度上是可以读取到其他事务的东西,只不过RC这个隔离级别采取了MVCC,但其实还是会更新数据,只不过通过版本链来控制数据透出,所以这里还是会更新索引的,这样就存在下面两个情况本事务内还可以根据索引字段搜索到数据其他事务根据索引查不到数据另一个问题索引更新这原创 2021-12-12 12:23:45 · 1303 阅读 · 0 评论 -
mysql为什么使用索引、什么时候不使用索引
不加索引没有索引,整张表读取数据,然后利用数据来比较条件,捞出符合条件的数据,表有很多数据,这些数据都会通过磁盘IO来读取,很耗时。加索引加索引后 ,通过索引可以找到主键,根据主键id去聚簇索引里读取数据,更准确的找到数据所在的页,减少磁盘IO。总结手段是加索引,目的是减少磁盘IO。...原创 2021-06-14 14:39:16 · 889 阅读 · 0 评论 -
mysql锁事
select 语句 需要加锁的只有2种场景:加排他锁可以使用select …for update语句加共享锁可以使用select … lock in share mode语句原创 2021-05-26 18:55:07 · 148 阅读 · 0 评论 -
mysql MVCC不能避免幻读
幻读并发情况下,A事务读取了一条记录,此时B事务插入一条记录,A事务又读取,读到了两条数据,此时就造成了读取数据不一致,一般到这幻读通常说的是事务提交了,而且是指删除、插入带来的问题。问题mysql MVCC 多版本并发控制中我们介绍了什么是MVCC,MVCC会为每个事务生成一个某个时间点的快照数据,保证事务内可以避免每次读数据不一致的问题,是RC、RR隔离级别下用于提高数据库性能,避免频繁锁,读写分离实现的一种方式,既然读快照信息,那么是不是MVCC就可以避免幻读,因为事务已经有了快照数据,如果这样原创 2021-05-17 09:52:14 · 943 阅读 · 0 评论 -
tair缓存学习
前言Tair主要有mdb,rdb,ldb三种存储引擎。定位 应用场景mdb 缓存类似于memcache 业务中当缓存用(后端有DB之类的数据源)。集团内绝对多数cache服务都是采用的tair mdb。rdb cache缓存采用了redis的内存存储结构。支持k/v,list,hash,set,sortedset等复杂数据结构。 业务需要高速访问某些数据结构,例如用户存储(set);一个商品的多个属性(hashmap);消息队列(list)等。ldb 高性能存储,可选内嵌mdb cache原创 2021-04-11 16:08:13 · 1339 阅读 · 0 评论 -
mysql MVCC 多版本并发控制
前言MVCC是行级锁的一个变种,但是它在很多情况下避免了加锁操作,因此开销更低。大多数的MVCC都实现了非阻塞的读操作,写操作也只锁定必要的行。MVCC 多版本并发控制 概念Multiversion concurrency control 多版本并发控制:并发访问(读或者写)数据库时,对正在事务内处理的数据做多版本的管理,用来避免由于写操作的堵塞,而引发读操作失败的并发问题。数据库默认隔离...原创 2020-08-30 11:39:20 · 315 阅读 · 0 评论 -
数据库优化
select * 优化选取业务想要的字段返回,而不是所有的字段返回。不然网络IO 太大了。order by 加索引有的时候,可以对order by 的字段也加上索引order by 和 limit 优化如下的语句:order by a limit 10这里有一个问题存在,如果a=110 的数据有15条:limit 0,10limit 10,10这两个limit的语句查询...原创 2020-06-25 14:56:22 · 193 阅读 · 0 评论 -
sql 自连接场景
前言太菜了,太菜了。场景一张表tab有2个字段,userId存储用户id,该字段表示发送消息的用户receiveId存储用户id,该字段表示收到消息的用户我们定义好友关系:互相发送过消息的用户就是好友。问题:找出是好友关系的用户对,也就是找出互相是好友关系的两个用户?我想了半天,真是难搞,后面查了自连接才知道,原来表可以跟自己join。select A.userId,A.r...原创 2020-01-16 23:11:53 · 757 阅读 · 0 评论 -
mysql 数据库 相关 概念知识
聚集索引、普通索引聚集索引:每个表至多一个聚集索引,术语“聚集”指实际的数据行和相关的键值都保存在一起。聚集索引不是一种单独的索引类型,而是一种存储数据方式。其具体细节依赖于实现方式,但是InnoDB的聚集索引实际上在同样的结构中保存了B+Tree索引和数据行。当表有聚集索引的时候,它的数据行实际保存在索引的叶子页中。每个表只能有一个聚集索引,因为不能一次把行保存在两个地方。(但是,覆盖索引可以...原创 2020-01-04 14:36:24 · 339 阅读 · 0 评论 -
mysql binlog知识
前言说实话惭愧,平常接触到的都是已经从binlog解析好的消息体,不清楚binlog的内容,所以这里讲解一下把。binlog 作用binlog是Mysql sever层维护的一种二进制日志,主要是用来记录对mysql数据更新或潜在发生更新的SQL语句,并以"事务"的形式保存在磁盘中;作用主要有:复制:MySQL Replication在Master端开启binlog,Master把它的...原创 2020-01-04 14:25:35 · 412 阅读 · 0 评论