MySQL数据库
以主流的Mysql为例,首先从数据库的架构出发,渐进式深入剖析了索引的优化,然后通过代码演示Sql的优化,最后深入去讲解数据库的锁,通过锁去进一步引申到数据库的ACID特性,并通过场景演示并发情况下存在问题及其解决方案
loulanyue_
使我有洛阳二尺地,安能配六国将相
展开
-
分布式数据库里CAP原理与BASE思想
一、传统的ACID数据库ACID四大特性A:原子性 atomicityC:一致性 consistencyI:独立性 isolationD:持久性 durability二、CAP理论的三选二 C:强一致性 A:高可用性 P:分布式容忍性CAP 理论的核心是:一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个CA 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大CP 满足一致性,分区容忍性的系统,通常性能不是特别高AP 满足可用性,分区容忍性的系统,原创 2020-05-18 22:21:22 · 229 阅读 · 0 评论 -
Spring事务与MySQL数据库隔离级别的关系,方便记忆的Spring事务传播特性
一、MySQL数据库存在的3种读取问题脏读:一个事务有可能读取了另一个事务改写但没提交的数据,如果回滚,那读取的就是无效数据不可重复读:在同一个事务中,多次读取同一数据时,返回的结果却不相同;后续读取可能读取到另一个事务提交的更新数据幻读:一个事务读取几行记录后,另一个事务有插入了几行记录,在后来的查询中,第一个事务就会发现原来没有的记录二、Spring事务与MySQL数据库隔离级别的关系Spring事务是基于数据库隔离级别的封装4种隔离级别,解决3种读取问题,高并发为了下保证ACID,性能会大原创 2020-05-17 22:06:23 · 390 阅读 · 0 评论 -
成功解决Duplicate entry '9551185' for key 'uk_query'
Duplicate entry '9551185' for key 'uk_query'原创 2020-04-27 18:37:18 · 5543 阅读 · 0 评论 -
成功解决The new driver class is `com.mysql.cj.jdbc.Driver'
SpringBoot +MyBatis自动生成mapper层代码时,报错:Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI ...原创 2020-03-27 18:53:13 · 3572 阅读 · 0 评论 -
如果发现sql语句始终走另一个索引,但是希望它走想要的索引,怎么办
强行指定SQL语句的索引原创 2020-02-01 23:39:40 · 2241 阅读 · 0 评论 -
数据库遵循的范式
范式一:列不可再分范式二:要有主键范式三:去除传递依赖原创 2020-01-31 23:16:42 · 236 阅读 · 0 评论 -
一顿操作猛如虎,细说MySQL索引的区别
PRIMARY, INDEX, UNIQUE 这3种是一类PRIMARY 主键。 就是 唯一 且 不能为空。INDEX 索引,普通的UNIQUE 唯一索引。 不允许有重复。FULLTEXT 是全文索引,用于在一篇文章中,检索文本信息的...原创 2019-09-27 18:41:32 · 215 阅读 · 0 评论 -
【MySQL】快速删除表中的全量测试数据
1.清空全部数据,写日志,可恢复,速度很慢delete from table_name;2.清空全部数据,不写日志,不可恢复,速度很快truncate table table_name;原创 2019-09-20 19:58:02 · 1072 阅读 · 0 评论 -
如何高效的优化数据表
1、选取最适用的字段属性MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。同样的,...原创 2019-08-22 23:30:44 · 610 阅读 · 0 评论 -
数据库里乐观锁和悲观锁的基本区别
悲观锁(Pessimistic Lock)悲观锁的特点是先获取锁,再进行业务操作,即“悲观”的认为获取锁是非常有可能失败的,因此要先确保获取锁成功再进行业务操作;通常所说的“一锁二查三更新”即指的是使用悲观锁。乐观锁(Optimistic Lock)乐观锁的特点先进行业务操作,不到万不得已不去拿锁;即“乐观”的认为拿锁多半是会成功的,因此在进行完业务操作需要实际更新数据的最后一步再去拿...原创 2019-08-15 21:26:51 · 295 阅读 · 0 评论 -
MySQL索引的多种类型
在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。下图就是一种可能的索引方式示例:左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址 为了加快Col2的查找,可以维护一个右边所示的二叉查找树,每个节点分别包含索引键值和一个指向对应数据记录物理地址的指针,这样就可...原创 2019-07-16 22:28:07 · 169 阅读 · 0 评论 -
MySQL索引下聚簇与非聚簇索引的区别
通常情况下,建立索引是加快查询速度的有效手段。但索引不是万能的,靠索引并不能实现对所有数据的快速存取。事实上,如果索引策略和数据检索需求严重不符的话,建立索引反而会降低查询性能。因此在实际使用当中,应该充分考虑到索引的开销,包括磁盘空间的开销及处理开销(如资源竞争和加锁)。例如,如果数据频繁的更新或删加,就不宜建立索引。本文简要讨论一下聚簇索引的特点及其与非聚簇索引的区别。建立索引:在S...原创 2019-07-09 18:36:49 · 790 阅读 · 0 评论 -
【MySQL】用存储过程删除历史数据
创建存储过程:DELIMITER //CREATE PROCEDURE autodelete() -> BEGIN -> delete From amap_log where DATE(time) <= DATE(DATE_SUB(NOW(),INTERVAL 30 day)); -> END -> //DELIMITER ;...原创 2019-06-14 20:40:14 · 2733 阅读 · 0 评论 -
MySQL必备指令集
列中仅选取唯一不同的值(DISTINCT )select DISTINCT (tool_sub_type) from table where tool_type = 1 ;三表联查(and)select * from table_1 t1 ,table_2 t2,table_3 t3 where t1.store_id = t2.id and t2.company_id=t3.id;...原创 2019-05-30 20:48:19 · 1593 阅读 · 0 评论