mysql主从架构
摘要:通过尽量缩短因日常维护操作(计划内) 和 突发的系统崩溃 (非计划)所导致的停机时间,以提高系统的可用性,这就是高可用 。 经常说到的 5个9 (99.999%)的可用 做到 5个9的可用性,那允许停服多长时间呢? 我们来算下 (365 * 24 * 60) * (1 - 0.99999) = 5.
阅读全文
posted @
2020-11-21 17:15
溪水静幽
阅读(155)
推荐(0)
当前读与快照读
摘要:MVCC (Multi-Version Concurrency Control) (基于锁的并发控制,Lock-Based Concurrency Control)。MVCC最大的好处,读不加锁,读写不冲突。在读多写少的OLTP应用中,读写不冲突是非常重要的,极大的增加系统的并发性能。 MVCC保存
阅读全文
posted @
2020-09-26 16:20
溪水静幽
阅读(2082)
推荐(1)
mysql覆盖索引与回表
摘要:一、什么是回表查询? 要从InnoDB的索引实现说起,InnoDB有两大类索引:聚集索引(clustered index) 普通索引(secondary index) InnoDB聚集索引和普通索引有什么差异? InnoDB聚集索引的叶子节点存储行记录,因此, InnoDB必须要有,且只有一个聚集索
阅读全文
posted @
2020-09-01 22:51
溪水静幽
阅读(177)
推荐(0)
Innodb主键递增
摘要:B+ 树特点: (1)所有关键字出现在叶子结点的链表中(稠密索引)且链表中的关键字恰好是有序的; (2)不可能在非叶子结点命中; (3)非叶子结点相当于是叶子结点的索引(稀疏索引),叶子结点相当于是存储(关键字)数据的数据层; 定义主键(PRIMARY KEY),InnoDB会选择主键作为聚集索引、
阅读全文
posted @
2020-05-23 09:22
溪水静幽
阅读(167)
推荐(0)
SQL--LIMIT
摘要:提前终止查询 SELECT * FROM labels WHERE label='iwpfdc'; SELECT * FROM labels WHERE label='iwpfdc' LIMIT 1; 优化LIMIT分页 处理分页会使用到LIMIT,当翻页到非常靠后的页面的时候,偏移量会非常大,这时
阅读全文
posted @
2020-05-10 14:44
溪水静幽
阅读(269)
推荐(0)
mysql乐观锁解决并发问题
摘要:案例: 银行两操作员同时操作同一账户。比如A、B操作员同时读取一余额为1000元的账户,A操作员为该账户增加100元,B操作员同时为该账户扣除50元,A先提交,B后提交。最后实际账户余额为1000-50=950元,但本该为1000+100-50=1050。这就是典型的并发问题。 乐观锁机制在一定程度
阅读全文
posted @
2020-02-29 21:21
溪水静幽
阅读(476)
推荐(0)
mysql悲观锁解决并发问题
摘要:整个数据处理过程,将数据处于锁定状态。悲观锁的实现,依靠数据库提供的锁机制。 商品t_goods表中有一个字段status,status为0代表商品未被下单,status为1代表商品已经被下单,那么对某个商品下单时必须确保该商品status为0。假设商品的id为1。 不使用锁 //1.查询出商品信息
阅读全文
posted @
2020-02-29 16:51
溪水静幽
阅读(185)
推荐(0)
聚簇索引和非聚簇索引原理
摘要:聚集索引与非聚集索引的区别是:叶节点是否存放一整行记录 InnoDB 主键使用的是聚簇索引,MyISAM 不管是主键索引,还是二级索引使用的都是非聚簇索引。 对于非聚簇索引表来说(右图),表数据和索引是分成两部分存储的,主键索引和二级索引存储上没有任何区别。使用的是B+树作为索引的存储结构,所有的节
阅读全文
posted @
2019-11-11 22:25
溪水静幽
阅读(611)
推荐(0)
mysql 索引失效
摘要:1.查询条件包含or 查询条件包含or时,可能会导致索引失效: 当or左右查询字段只有一个是索引,该索引失效,explain执行计划key=null;只有当or左右查询字段均为索引时,才会生效; 2.组合索引,不是使用第一列索引,索引失效 3.like 以%开头:使用like模糊查询,当%在前缀时,
阅读全文
posted @
2019-09-16 20:33
溪水静幽
阅读(266)
推荐(0)
为什么mysql用B+树做索引而不用B-树或红黑树
摘要:B-树、B+树、红黑树,是平衡查找树,那么查询效率上讲,平均都是O(logn)。使用什么哪种数据结构,肯定是出于提高数据库的查询效率的考虑。 一、B+树做索引而不用B-树 Mysql如何衡量查询效率呢?– 磁盘IO次数。 一般来说索引非常大,尤其是关系性数据库这种数据量大的索引能达到亿级别,所以为了
阅读全文
posted @
2019-09-11 21:51
溪水静幽
阅读(1425)
推荐(0)
mysql 设置外键约束SET FOREIGN_KEY_CHECKS=1
摘要:Mysql中如果表和表之间建立的外键约束,则无法删除表及修改表结构 解决方法是在Mysql中取消外键约束: SET FOREIGN_KEY_CHECKS=0; 然后将原来表的数据导出到sql语句,重新创建此表后,再把数据使用sql导入, 然后再设置外键约束: SET FOREIGN_KEY_CHEC
阅读全文
posted @
2019-08-04 16:25
溪水静幽
阅读(16574)
推荐(3)
MySql数据库引擎
摘要:InnoDB存储引擎 InnoDB给Mysql的表提供了事务、回滚、崩溃修复能力、多版本并发控制的事务安全。InnoDB是Mysql上第一个提供外键约束的表引擎, InnoDB存储引擎中支持自动增长列AUTO_INCREMENT,自动增长列必须为主键。在插入值时,如果自动增长列不输入值,则插入的值为
阅读全文
posted @
2018-10-31 16:54
溪水静幽
阅读(70)
推荐(0)
游标
摘要:游标,又称光标。实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制 游标充当指针的作用。游标能遍历结果中的所有行,但它一次只指向一行。游标初始位置在before first,使用的时候是先移到下一行,然后再取数据 SQL的游标是一种临时的数据库对象,即可以用来存放在数据库表中的数据行副
阅读全文
posted @
2018-10-30 12:18
溪水静幽
阅读(252)
推荐(0)
存储过程
摘要:常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(StoredProcedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。 一个存储过程是一个可编程的函数(存储过程无返回值)
阅读全文
posted @
2018-10-30 11:45
溪水静幽
阅读(158)
推荐(0)
乐观锁与悲观锁
摘要:在数据库中,悲观锁的流程如下: 在对任意记录进行修改前,先尝试为该记录加上排他锁(exclusive locking)。 如果加锁失败,说明该记录正在被修改,那么当前查询可能要等待或者抛出异常。 如果成功加锁,那么就可以对记录做修改,事务完成后就会解锁。 其间如果有其他对该记录做修改或加排他锁的操作
阅读全文
posted @
2018-10-28 17:44
溪水静幽
阅读(131)
推荐(0)
数据库事务并发机制
摘要:一个业务逻辑方法往往包括一系列数据库原子访问操作,并且这些数据库原子访问操作应该绑定成一个整体,即要么全部执行,要么全部不执行,通过这种方式我们可以保证数据库的完整性。也就是说,事务是最小的逻辑执行单元,是数据库维护数据一致性的基本单位。 总的来说,事务是一个不可分割操作序列,也是数据库并发控制的基
阅读全文
posted @
2018-10-28 11:22
溪水静幽
阅读(482)
推荐(0)
MySql日志
摘要:MySQL中会有四种类型的日志文件,如下: 错误日志:用于记录在数据库运行中的所有错误 一般查询日志:用于记录所有针对数据库的请求信息,不管该操作是否执行; 慢查询日志:用于记录一些对数据库很耗时的操作,以便之后进行SQL预计层面的优化; 二进制日志:记录所有针对数据的修改的操作,不管该操作是否更改
阅读全文
posted @
2018-10-26 21:34
溪水静幽
阅读(113)
推荐(0)
分页
摘要:MySQL中的分页相对SQL Server来说就简单多了,因为它有现成的语句limit用来分页,它可以接收一个或者两个参数: 接收两个参数时 接收两个参数时 第一个参数是相对于结果集中第一行的偏移量,这个偏移量是从0开始的,也就是说第一行的偏移量是0,而不是1, 第二个参数指的是返回结果的最大行数,
阅读全文
posted @
2018-10-26 19:47
溪水静幽
阅读(239)
推荐(0)
delete和truncate的区别和联系
摘要:从语言的角度来看 delete是DML类型的语句;而truncate是DDL类型的语句,执行truncate需要drop权限,而且由于它是DDL语句,是通过删除表,然后再重建实现的,所以执行的时候要比delete性能高很多,因为不需要一行一行的去删除数据。 从事务的角度来说 delete 过程如果出
阅读全文
posted @
2018-10-26 18:24
溪水静幽
阅读(370)
推荐(0)
MySQL数据库连接超时问题的分析与解决
摘要:针对数据库的连接,之前没有特别注意过,直到遇到如下问题: 从上面的信息得知,应用程序与数据库服务器的连接中断了,那么为什么会出现上面的问题呢?不是有连接池吗?里面不是保存有大量的连接吗?比如使用c3p0数据源配置如下: 错误信息中已经说得很明白了,上一次客户端和服务的通信已经是54812411ms前
阅读全文
posted @
2018-10-26 17:10
溪水静幽
阅读(4206)
推荐(0)