1、主从复制概述 1.1、如何提升数据库并发能力在实际工作中常常将Redis作为缓存与MySQL配合来使用,当有请求的时候,首先会从缓存中进行查找,如果存在就直接取出。如果不存在再访问数据库,这样就提升了读取的效率,也减少了对后端数据库的访问压力。Redis的缓存架构是高并发架构中非常重要的一环。此外,一般应用对数据库而言都是“ 读多写少 ”,也就说对数据库读取数据的压力比较大,有一个思路就是采用
概述我们在讲解数据库事务时,讲过两种日志:重做日志、回滚日志。对于线上数据库应用系统,突然遭遇数据库宕机怎么办?在这种情况下,定位宕机的原因就非常关键。可以查看数据库的错误日志。因为日志中记录了数据库运行中的诊断信息,包括了错误、警告和注释等信息。比如:从日志中发现某个连接中的SQL操作发生了死循环,导致内存不足,被系统强行终止了。明确了原因,处理起来也就轻松了,系统很快就恢复了运行。除了发现错误
1、什么是MVCCMVCC (Multiversion Concurrency Control),多版本并发控制。顾名思义,MVCC是通过数据行的多个版本管理来实现数据库的并发控制。这项技术使得在InnoDB的事务隔离级别下执行一致性读操作有了保证。换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值,这样在做查询的时候就不用等待另一个事务释放锁。MVCC没有正式的标准
1、概述锁是计算机协调多个进程或线程并发访问某一资源的机制。在程序开发中会存在多线程同步的问题,当多个线程并发访问某个数据的时候,尤其是针对一些敏感的数据(比如订单、金额等),就需要保证这个数据在任何时刻最多只有一个线程在访问,保证数据的完整性和一致性。在开发过程中加锁是为了保证数据的一致性,这个思想在数据库领域中同样很重要。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数
2、Undo日志redo log是事务持久性的保证,undo log是事务原子性的保证。在事务中 更新数据 的 前置操作 其实是要先写入一个 undo log 。2.1、如何理解Undo日志事务需要保证 原子性 ,也就是事务中的操作要么全部完成,要么什么也不做。但有时候事务执行到一半会出现一些情况,比如:情况一:事务执行过程中可能遇到各种
概述事务有4种特性 :原子性、 一致性、 隔离性和 持久性。那么事务的四种特性到底是基于什么机制实现呢?事务的隔离性由锁机制实现而事务的原子性、一致性和持久性由事务的redo日志和undo日志来保证。 REDO LOG称为重做日志,提供再写入操作,恢复提交事务修改的页操作,用来保证事务的特久性。 &nbs
1、数据库事务概述事务是数据库区别于文件系统的重要特性之一,当有了事务就会让数据库始终保持一致性,同时还能通过事务的机制恢复到某个时间点,这样可以保证已提交到数据库的修改不会因为系统崩溃而丢失1.1、存储引擎支持情况SHOW ENGINES 命令来查看当前 MySQL 支持的存储引擎都有哪些,以及这些存储引擎是否支持事务。能看出在MysQL中,只有InnoDB是支持事务的1.2、基本概念
1、数据库调优的措施 1.1、调优的目标尽可能节省系统资源,以便系统可以提供更大负荷的服务(吞吐量更大)合理的结构设计和参数调整,以提高用户操作响应的速度(响应速度更快)减少系统的瓶颈,提高MySQL数据库整体的性能1.2、如何定位调优问题不过随着用户量的不断增加,以及应用程序复杂度的提升,我们很难用“更快”去定义数据库调优的目标,因为用户在不同时间段访问服务器遇到的瓶颈不同,比如双十一促销的时候
1、PowerDesigner的使用PowerDesigner是一款开发人员常用的数据库建模工具,用户利用该软件可以方便地制作 数据流程图 、概念数据模型 、 物理数据模型 ,它几乎包括了数据库模型设计的全过程,是Sybase公司为企业建模和设计提供的一套完整的集成化企业级建模解决方案安装: https://www.cnblogs.com/luyj00436/p/16932603.html 1.1
1、为什么需要数据库设计2、范 式 2.1、范式简介2.2、范式都包括哪些2.3、键和相关属性的概念范式的定义会使用到主键和候选键,数据库中的键(Key)由一个或者多个属性组成。数据表中常用的几种键和属性的定义: 超键︰能唯─标识元组的属性集叫做超键。 候选键︰如果超键不包括多余的属性,那么这个超键就是候选键。·主键:用户可以从候选键中选择一个作为主键。 外键∶如果数据表R1中的某属性
10、索引下推Index Condition Pushdown(ICP) 是 MySQL 5.6 中新特性,是一种在存储引擎层使用索引过滤数据的一种优化方式。ICP 可以减少存储引擎访问基表的次数以及 MySQL 服务器访问存储引擎的次数。10.1、使用前后对比在不使用 ICP 索引扫描的过程: storage 层:只将满足 index key 条件的索引记录对应的整行记录取出,返回给 ser
4、子查询优化MySQL从4.1版本开始支持子查询,使用子查询可以进行SELECT语句的嵌套查询,即一个SELECT查询的结果作为另一个SELECT语句的条件。 子查询可以一次性完成很多逻辑上需要多个步骤才能完成的操作 。 子查询是MySQL的一项重要的功能,可以帮助我们通过一个SQL语句实现比较复杂的查询。但是,子查询的执行效率不高。 通常我们可以将其优化成一个连接查询~ 原因: ① 执行
都有哪些纬度可以进行数据库调优?简言之: 索引失效、没有充分利用所以——索引建立 关联查询太多JOIN(设计缺陷或不得已的需求)——SQL优化 服务器调优及各个参数设置(缓冲、 线程数)——调整my.cnf 数据过多——分库分表 关于数据库调优的知识点非常分散,不同DBMS,不同的公司,不同的职位,不同的项目遇到的问题都不尽相同。 虽然SQL查询优化的技术很多,但是大体方向上完全可以分为 物理查
1、数据库服务器的优化步骤当我们遇到数据库调优问题的时候,该如何思考呢?这里把思考的流程整理成下面这张图。整个流程划分成了 观察(Show status) 和 行动(Action) 两个部分。字母 S 的部分代表观察(会使用相应的分析工具),字母 A 代表的部分是行动(对应分析可以采取的行动)可以看到数据库调优的步骤中越往金字塔尖走,其成本越高,效果越差,因
1、索引的声明与使用 1.1、索引的分类MySQL 的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。从 功能逻辑 按照上说,索引主要有 4 种:普通索引、唯一索引、主键索引、全文索引。按照 物理实现方式 ,索引可以分为 2 种:聚簇索引和非聚簇索引。按照 作用字段个数 进行划分,分成单列索引和联合索引。 小结:不同的存储引擎支持的索引类型也不一样 InnoDB :支持 B
1、数据的存储结构:页1.1、磁盘与内存交互基本单位:页1.2、页结构概述1.3、页的大小1.4、页的上层结构2、页的内部结构2.1、File Header(文件头部)和File Trailer(文件尾部) 2.1.1、File Header(文件头部)作用:描述各种页的通用信息。(比如页的编号、其上一页、下一页是谁等)大小:38字节构成:FIL_PAGE_OFFSET(4字节)每一个页都有一个单
1、为什么使用索引假如给数据使用 二叉树 这样的数据结构进行存储,如下图所示 2、索引及其优缺点 2.1、索引概述2.2、优点(1)类似大学图书馆建书目索引,提高数据检索的效率,降低 数据库的IO成本 ,这也是创建索引最主 要的原因。 (2)通过创建唯一索引,可以保证数据库表中每一行 数据的唯一性 。 (3)在实现数据的 参考完整性方面,可以 加速表和表之间的连接 。换句话说,对于有依赖关系的子表
1、查看存储引擎为了方便管理,人们把连接管理、查询缓存、语法解析、查询优化这些并不涉及真实数据存储的功能划分为MySQL Server的功能,把真实存取数据的功能划分为存储引擎的功能,所以在MySQL Server完成了查询优化后,只需按照生成的执行计划调用底层存储引擎提供的API,获取到数据后返回给客户端就好了 MySQL中提到了存储引擎的概念,简而言之,存储引擎就是指表的类型,其实存储引擎以前
1、逻辑架构剖析 1.1、服务器处理客户端请求首先MySQL是典型的C/S架构,即Client/Server 架构‘ , 服务器端程序使用的mysqld。不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送一段文本(SQL语句) ,服务器进程处理后再向客户端进程发送一段文本(处理结果)那服务器进程对客户端进程发送的请求做了什么处理,才能产生最后的处理结果
1、用户管理 1.1、密码过期策略在MySQL中,数据库管理员可以 手动设置 账号密码过期,也可以建立一个 自动 密码过期策略。 过期策略可以是 全局的,也可以为每个账号设置单独的过期策略。 ALTER USER user PASSWORD EXPIRE; 练习: ALTER USER 'kangshifu'@'localhost' PASSWORD EXPIRE; 方式①:使用SQL语句更改
1、数据库和文件系统1.1、查看默认数据库SHOW DATABASES;可以看到有4个数据库是属于MySQL自带的系统数据库。mysqlMySQL 系统自带的核心数据库,它存储了MySQL的用户账户和权限信息,一些存储过程、事件的定义信息,一些运行过程中产生的日志信息,一些帮助信息以及时区信息等。information_schemaMySQL 系统自带的数据库,这个数据库保存着MySQL服务器维护
3、新特性2:公用表表达式公用表表达式(或通用表表达式)简称为CTE(Common Table Expressions)。CTE是一个命名的临时结果集,作用范围是当前语句。CTE可以理解成一个可以复用的子查询,当然跟子查询还是有点区别的,CTE可以引用其他CTE,但子查询不能引用其他子查询。所以,可以考虑代替子查询。依据语法结构和执行方式的不同,公用表表达式分为普通公用表表达式和递归公用表表达式
2、新特性1:窗口函数 2.1、使用窗口函数前后对比假设我现在有这样一个数据表,它显示了某购物网站在每个城市每个区的销售额: CREATE TABLE sales( id INT PRIMARY KEY AUTO_INCREMENT, city VARCHAR(15), county VARCHAR(15), sales_value DECIMAL ); INSERT INTO sales(ci
1、mysql8.0新特性概述MySQL从5.7版本直接跳跃发布了8.0版本 ,可见这是一个令人兴奋的里程碑版本。MySQL 8版本在功能上 做了显著的改进与增强,开发者对MySQL的源代码进行了重构,突出的一点是多MySQL Optimizer优化 器进行了改进。不仅在速度上得到了改善,还为用户带来了更好的性能和更棒的体验。 1.1、mysql8.0新增特性1. 更简便的NoSQL支持 NoSQ
1、触发器概述MySQL从 5.0.2 版本开始支持触发器。MySQL的触发器和存储过程一样,都是嵌入到MySQL服务器的一 段程序。 触发器是由事件来触发 某个操作,这些事件包括INSERT、UPDATE、DELETE事件。所谓事件就是指 用户的动作或者触发某项行为。 如果定义了触发程序,当数据库执行这些语句时候,就相当于事件发生了,就会自动激发触发器执行相应的操作。 当对数据表中的数据执行插入
在MySQL数据库中,全局变量可以通过SETGLOBAL语句来设置。 例如,设置服务器语句超时的限制,可以通过设置系统变量max_execution_time来实现: SET GLOBAL MAX_EXECUTION_TIME=2000; 使用SETGLOBAL语句设置的变量值只会临时生效,数据库重启后,服务器又会从MySQL配置文件中读取变量的默认值。 MySQL8.0版本新增了SET PER
4、游标 4.1、什么是游标虽然我们也可以通过筛选条件WHERE和HAVING,或者是限定返回记录的关键字LIMIT返回一条记录, 但是,却无法在结果集中像指针一样,向前定位一条记录、向后定位一条记录,或者是随意定位到某一条记录并对记录的数据进行处理。 这个时候,就可以用到游标。游标,提供了一种灵活的操作方式,让我们能够对结果集中的每一条记录进行定位,并对指向的记录中的数据进行操作的数据结构。 游
3、流程控制解决复杂问题不可能通过一个SQL语句完成,我们需要执行多个SQL操作。流程控制语句的作用就是控制存储过程中SQL语句的执行顺序,是我们完成复杂操作必不可少的一部分。 只要是执行的程序,流程就分为三大类: 顺序结构:程序从上往下依次执行 分支结构:程序按条件进行选择执行,从两条或多条路径中选择一条执行 循环结构:程序满足一定条件下,重复执行一组语句 针对于MyS
1、变量在MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间结果数据,或者输出最终的结果数据。 在MySQL数据库中,变量分为系统变量以及用户自定义变量1.1、系统变量 1.1.1、系统变量分类变量由系统定义,不是用户定义,属于服务器层面,启动MySQL服务,生成MySQL服务实例期间 MySQL将为MySQL服务器内存中的系统变量赋值,这些系统变量定义了当前MySQL服务实例
5、存储过程和存储函数的查看、修改、删除 5.1、查看创建完之后,怎么知道我们创建的存储过程、存储函数是否成功了呢? MySQL存储了存储过程和函数的状态信息,用户可以使用SHOW STATUS语句或SHOW CREATE语句来查看,也可直接从系统的information_schema数据库中查询。 这里介绍3种方法。 1. 使用SHOW CREATE语句查看存储过程和函数的创建信息 基本语法结
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号