Mysql
文章平均质量分 77
黄泥川水猴子
焦虑没有用,得学习
展开
-
Session&Cookie&token
服务器为了保存用户状态而创建的一个特殊的对象。当浏览器第一次访问服务器时,服务器创建一个session对象(该对象有一个唯一的id,一般称之为sessionId),服务器会将sessionId以cookie的方式发送给浏览器。当浏览器再次访问服务器时,会将sessionId发送过来,服务器依据sessionId就可以找到对应的session对象。...原创 2022-07-25 15:50:19 · 316 阅读 · 0 评论 -
InnoDB,快照读,在RR和RC下有何差异?
先说结论:InnoDB表:t(id PK, name);表中有三条记录:1, shenjian2, zhangsan3, lisiA1: start transaction;B1: start transaction;A2: select * from t;B2: insert into t values (4, wangwu);A3: select * from t;B3: commit;A4: select * from t;提问1:假设事务的隔离级别是可重复读RR,事务A中的三次原创 2022-07-01 10:36:55 · 352 阅读 · 0 评论 -
mysql索引最左匹配原则的理解
mysql查询优化器会判断纠正这条sql语句该以什么样的顺序执行效率最高,最后才生成真正的执行计划。所以,当然是我们能尽量的利用到索引时的查询顺序效率最高咯,所以mysql查询优化器会最终以这种顺序进行查询执行。当b+树的数据项是复合的数据结构,比如(name,age,sex)的时候,b+数是按照从左到右的顺序来建立搜索树的,比如当(张三,20,F)这样的数据来检索的时候,b+树会优先比较name来确定下一步的所搜方向,如果name相同再依次比较age和sex,最后得到检索的数据;但当(20,F)这样的没原创 2022-04-12 19:50:17 · 968 阅读 · 0 评论 -
从根上理解SQL的like查询%在前为什么不走索引?
我们都知道,我们通常用的索引数据结构是B+树,而索引是有序排列的。数据只存放在叶子节点,而且是有序的排放。如果索引关键字的类型是String类型,排列顺序如下:可以看出,索引的排列顺序是根据比较字符串的首字母排序的,如果首字母相同,就根据比较第二个字母进行排序,以此类推。我们在进行模糊查询的时候,如果把 % 放在了前面,最左的 n 个字母便是模糊不定的,无法根据索引的有序性准确的定位到某一个索引,只能进行全表扫描,找出符合条件的数据。如:where like ‘%sme’因为最左是%,无法确原创 2022-04-12 19:41:37 · 1913 阅读 · 1 评论 -
由redolog产生了关于binlog问题&两阶段提交
有了redo log,为啥还需要binlog呢?1、redo log 文件是固定大小的,是循环写的,写满了会从头继续写,而 binlog 是追加写的,写满了再新建文件接着写。2、redo log是innodb引擎层实现的,并不是所有引擎都有。基于以上,binlog必不可少1、binlog是server层实现的,意味着所有引擎都可以使用binlog日志2、binlog通过追加的方式写入的,可通过配置参数max_binlog_size设置每个binlog文件的大小,当文件大小大于给定值后,日志会发生滚原创 2022-04-08 12:05:36 · 1196 阅读 · 0 评论 -
redo log
1.redo日志事务有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢?事务的隔离性由锁机制实现。而事务的原子性、一致性和持久性由事务的 redo 日志和undo 日志来保证。REDO LOG 称为重做日志,提供再写入操作,恢复提交事务修改的页操作,用来保证事务的持久性。UNDO LOG 称为回滚日志,回滚行记录到某个特定版本,用来保证事务的原子性、一致性。有的DBA或许会认为 UNDO 是 REDO 的逆过程,其实不然。1.1 为什么需要REDO日志一方原创 2022-03-27 13:21:42 · 2084 阅读 · 2 评论 -
聊聊redo log和undo log原理
当前读读取的数据是最新版本,读取数据时还要保证其他并发事务不会修改当前的数据,当前读会对读取的记录加锁。比如:select …… lock in share mode(共享锁)、select …… for update | update | insert | delete(排他锁)快照读每一次修改数据,都会在 undo log 中存有快照记录,这里的快照,就是读取undo log中的某一版本的快照。这种方式的优点是可以不用加锁就可以读取到数据,缺点是读取到的数据可能不是最新的版本。一般的查询都是快原创 2022-03-25 21:30:17 · 1271 阅读 · 0 评论 -
Mysql事务
什么是事务?数据库中的事务是指对数据库执行一批操作,这些操作最终要么全部执行成功,要么全部失败,不会存在部分成功的情况。事务的几个特性(ACID)原子性(Atomicity)事务的整个过程如原子操作一样,最终要么全部成功,或者全部失败,这个原子性是从最终结果来看的,从最终结果来看这个过程是不可分割的。一致性(Consistency)一个事务必须使数据库从一个一致性状态变换到另一个一致性状态。首先回顾一下一致性的定义。所谓一致性,指的是数据处于一种有意义的状态,这种状态是语义上的而不是语法原创 2022-03-24 15:51:01 · 1036 阅读 · 0 评论 -
MySQL架构和存储引擎
一、MySQL架构和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。连接层:最上层是一些客户端和连接服务。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它原创 2022-03-23 16:15:03 · 184 阅读 · 0 评论