
DB
文章平均质量分 87
DB
A__17
这个作者很懒,什么都没留下…
展开
-
mysql中的日志
目录前言binlog概念:binlog的使用场景:主从复制:数据存储异构:数据恢复:redo log概念:实现:说明:binlog 和 redolog的关系:redo log与binlog区别mysql通过binlog和redo log来保证故障恢复:undo log概念:前言mysql日志主要包括二进制日志、事务日志、慢查询日志、错误日志、查询日志等几大类。逻辑日志:逻辑日志可以简单理解为执行变更的sql语句。物理日志:因原创 2019-06-18 22:28:31 · 790 阅读 · 0 评论 -
mysql系统架构
系统架构图片取自官网连接层连接器负责跟客户端建立连接,获取客户端权限,身份认证,以及维持和管理连接。服务层(server层)职责:用来解析 SQL 的语义、生成查询计划,调用存储引擎层和文件系统层来检索/存储数据。优化跟踪器:mysql优化跟踪器查询缓存:存储引擎层职责:按照服务层下发的请求,通过索引或者全表扫描等方式把数据上传到服务层。存储引擎的类型:MySQL的存储引擎索引:数据库索引 mysql对索引的优化文件系统层集群架原创 2018-01-22 01:56:00 · 432 阅读 · 0 评论 -
mysql的存储引擎
查看数据库事务的隔离级别,MySQL默认为:REPEATABLE-READ。# 查看自动提交是否开启(1表示开启,0表示关闭,默认开启)# 查看数据库的版本,eg:5.6.33-log。# 查看MySQL所支持的存储引擎。# 查看MySQL默认的存储引擎。# 查看数据库当前连接进程的信息。# 查看数据库的data目录。原创 2018-01-22 20:58:27 · 452 阅读 · 0 评论 -
数据库索引
实现:Innodb存储引擎使用B+树来实现。 Memory存储引擎默认使用哈希索引来实现。优点:可以大大加快数据的查询速度: 索引大大降低了服务器需要扫描的数据量。 在使用分组和排序子句查询数据时,可以显著减少查询中分组和排序的时间。 通过创建唯一性索引,可以保证表中每一行数据的唯一性缺点:增加了数据库的存储空间。 在修改、插入和删除数据时,索引也要动态维护,故在增删改数据时会花费较多的时间。分类:普通索引: 唯一索引:所有行的索引值均不相同。 主键索引: 定义主原创 2017-11-08 23:27:48 · 752 阅读 · 0 评论 -
B树和B+树
目录背景相关概念:MySQL中InnoDB引擎:B树概念:B树结构:优点:缺点:举例:B+树概念:数据库记录结构:B+树结构:优点:缺点:举例:B树与AVL树(平衡二叉树)相比:B树和B+树的比较:背景相关概念:操作系统从硬盘中读取数据时是以块(block)为单位读取的。硬盘的最小读写单元为扇区(sector),操作系统就将相邻的扇区组合在一起,形成一个块,然后再对块进行整体的操作。 读取数据时位于同一磁盘块.原创 2017-11-09 23:13:40 · 1415 阅读 · 0 评论 -
mysql中的分组 -- group by
目录一、前言关于联合索引:官方文档:二、group by语句3种执行逻辑:2.1松散索引扫描(Loose Index Scan)概念:原理:使用松散索引扫描需要满足以下条件:2.2紧凑索引扫描(Tight Index Scan)概念:原理:使用紧凑索引扫描需要满足以下条件:松散索引扫描和紧凑索引扫描的比较:2.3内部内存临时表三、group by语句的优化:四、DISTINCT 优化概念:举例:一、前言满足一个GROUP B原创 2016-08-20 22:34:23 · 5110 阅读 · 0 评论 -
mysql中的排序 -- order by
目录排序缓存区(sort buffer)概念:内部排序VS外部排序:参数:回表rowId二、排序算法2.1全字段排序概念:例子:缺点:2.2rowId排序概念:特点:例子:全字段排序还是rowId排序?2.3优先队列排序分页查询时的排序:概念:过程:三、借助临时表进行排序内存临时表排序磁盘临时表排序排序缓存区(sort buffer)概念:mysql会为每个查询线程分配一块内存作为排序缓冲区(sort原创 2015-06-07 11:43:53 · 2337 阅读 · 0 评论 -
mysql对索引的优化
前言索引扫描:存储引擎通过检索索引查询索引数据(主要是查询基表中数据的id)。索引过滤:存储引擎通过检索索引查询索引数据(主要是查询基表中数据的id),如果查询条件中的部分字段也是该索引的字段时,存储引擎会对针对这部分字段对索引数据进行过滤。回表:存储引擎(存储引擎层)通过二级索引拿到主键id之后,去遍历主键索引(文件系统层)来获取数据的过程就叫做回表。索引条件下推(index condition pushdown,简称ICP)官网:https://dev.mysql.co原创 2015-09-24 14:16:09 · 667 阅读 · 0 评论 -
mysql优化跟踪器
optimizer trace概念: 优化跟踪器,是跟踪语句的解析优化过程,并将跟踪到的信息记录到 INFORMATION_SCHEMA.OPTIMIZER_TRACE表中。 该功能默认是不开启的,并且默认只记录最后一次结果到 INFORMATION_SCHEMA.OPTIMIZER_TRACE表中。 查看参数配置:show variables like '%optimizer_trace%'; optimizer_trace enabled:启用/禁用op..原创 2018-06-22 23:14:28 · 806 阅读 · 0 评论 -
常见的索引优化
一、SQL分析:MySQL中的explain命令二、索引失效的场景:2.1使用or作为连接条件说明:当or两边的条件都有索引时,才可能走索引(通常是使用了多个索引index_merge),最终是否走索引,需根据explain来检测。优化:将or两边条件中相同的条件抽取出来:where ( a=xx and b=xx ) or ( a=xx and b=xxx) ==> where a=xx and (b=xx or b=xxx) 使用union all或uni...原创 2015-12-23 21:38:04 · 3250 阅读 · 0 评论 -
MySQL中的explain命令
MySQL中的explain命令: 概念:explain显示了MySQL如何使用索引来处理select语句以及连接表,我们可以根据explain的结果来优化我们的sql。 结果: id select_type 说明: 查询的类型 SIMPLE 普通查询 table 说明: 扫描的表。 type 说明:type是一个很重要的指标,ty...原创 2018-03-20 22:01:04 · 454 阅读 · 0 评论 -
数据库基础
数据库的三范式:第一范式(1NF):字段的原子性概念:数据库表中的字段都是单一属性的,不可再分。说明:单一属性的类型包括整型、字符型、逻辑型、日期型等。注:集合、数组等类型不属于单一属性的类型。 第二范式(2NF):记录的唯一性前提:满足第二范式的前提是先满足第一范式。 概念:非主属性必须完全依赖于主键。说明:主键可能由多个属性构成,完全依赖指不存在非主属性依赖于主键中的某一部分属性。第三范式(3NF):非主属性不依赖于其它非主属性...原创 2015-09-23 16:08:22 · 878 阅读 · 0 评论 -
数据库中间件
导读:本文详细介绍了中间件,主要从数据库拆分过程及挑战、主流数据库中间件设计方案、读写分离核心要点、分库分表核心要点展开说明。1. 数据库拆分过程及挑战垂直拆分、读写分离、分库分表(水平拆分)。每个拆分过程都能解决业务上的一些问题,但同时也面临了一些挑战。1.1 垂直拆分对于一个刚上线的互联网项目来说,由于前期活跃用户数量并不多,并发量也相对较小,所以此时企业一般都会选择将所有数据存放在一个数据库 中进行访问操作。举例来说,对于一个电商系统,其用户模块和产品模块的表刚开始都是位于一个库.转载 2021-03-02 20:57:04 · 990 阅读 · 0 评论 -
分布式事务
1、事务简介 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。在关系数据库中,一个事务由一组SQL语句组成。事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。 原子性(atomicity):个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。 一致性(consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态,事务的中间状态不能被观察到的。...转载 2021-03-02 21:07:13 · 431 阅读 · 0 评论 -
Databus架构分析
1. 简介Databus是一个低延迟、可靠的、支持事务的、保持一致性的数据变更抓取系统。由LinkedIn于2013年开源。Databus通过挖掘数据库日志的方式,将数据库变更实时、可靠的从数据库拉取出来,业务可以通过定制化client实时获取变更并进行其他业务逻辑。Databus有以下特点:数据源和消费者之间的隔离。 数据传输能保证顺序性和至少一次交付的高可用性。 从变化流的任意时间点进行消费,包括通过bootstrap获取所有数据。 分区消费 源一致性保存,消费不成...转载 2020-05-30 16:14:46 · 1601 阅读 · 0 评论 -
数据库中表的复杂查询&分页
一、数据库中表的复杂查询 1)连接查询 1.0连接的基本语法格式: from TABLE1 join_type TABLE2 [on (join_condition)][where (query_condition)] TABLE1:左表 TABLE2:右表 join_type:连接的类型。交叉、内连接、左外连接、右外连接 on:设置连接条件 where...原创 2015-07-01 14:51:55 · 2514 阅读 · 0 评论 -
MySQL MGR架构
一、MGR简介MGR全称MySQL Group Replication(Mysql组复制),是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决方案。MGR提供了高可用、高扩展、高可靠的MySQL集群服务。在MGR出现之前,用户常见的MySQL高可用方式,无论怎么变化架构,本质就是Master-Slave架构。MySQL 5.7版本开始支持无损半同步复制(lossless semi-syncreplication),从而进一步提示数据复制的强一致性。MySQL Group Repl转载 2021-03-10 14:53:47 · 1315 阅读 · 0 评论 -
利用Spring的AbstractRoutingDataSource来解决多数据源的问题,eg:数据库的读写分离
利用Spring的AbstractRoutingDataSource来解决多数据源的问题,eg:数据库的读写分离步骤: 1)在配置文件中定义多个datasource。 2)自定义一个DBContext类,并在其中封装一个静态的ThreadLocal变量(用来存储当前线程应该访问哪个数据库),并实现访问静态ThreadLocal变量的静态方法(设值和取值)。 3)自定义一个继承了Abstr原创 2017-06-27 23:48:32 · 814 阅读 · 0 评论 -
复合索引&最左原则
建表语句: CREATE TABLE `t_user` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `bu_id` INT(20) NOT NULL, `name` VARCHAR(255) NOT NULL, `age` INT(11) NOT NULL, `sex` VARCHAR(255) NULL DEFAULT NULL...原创 2018-03-29 21:03:09 · 3431 阅读 · 1 评论 -
乐观锁和悲观锁
乐观锁: 原理: 1)通过在数据库表中添加一个版本号(version)字段来实现乐观锁。 2)更新前先获取到该条数据的版本号(v1),然后在更新语句(更新数据&更新版本号)的where条件中添加 version=v1 条件, 1>若满足version=v1条件(即:成功获取乐观锁),则成功更新数据且版本号+1; 2>若不满足version=v1条件(即:...原创 2015-09-23 15:51:30 · 720 阅读 · 0 评论 -
MySQL中create table as VS create table like
create table as: 说明:复制表结构和数据 用法: create table new_table as select * from old_table; create table new_table as select * from old_table limit 0; # limit 0表示只复制表结构,不复制数据。 create table like:...原创 2018-04-16 21:23:29 · 1831 阅读 · 0 评论 -
MySQL中常见的函数&常见的问题
MySQL中常见的函数: if语句: 格式:IF(Condition,A,B) 说明:当Condition为TRUE时,返回A;当Condition为FALSE时,返回B。 case when语句: 举例: SELECT t.message_id,t.title, CASE WHEN TO_DAYS(t.date)= TO_DAYS(NOW()) THEN '今...原创 2017-06-17 23:00:56 · 979 阅读 · 0 评论