数据库
文章平均质量分 88
以东南大学 徐立臻老师课程为教材整理笔记
Strive for the best!
这个作者很懒,什么都没留下…
展开
-
MySQL学习笔记7——MySQL主备一致性问题,主备高可用问题
状态1A主B备,从A更新同步到B。需要主备切换的时候,B主A备。备库要设置成只读:主库到备库的数据怎么同步的,单主模式假设有一个更新语句,执行过程如上,其中主库内部又一个线dump_thread,专门用来服务备库的长连接。一个事务日志同步的完整过程是这样的binlog拿走之后可以直接被备库使用一种是statement,一种是row,一种是mix。至少用mix。因为:row格式的好处:方便恢复数据即使我执行的是delete语句,row格式的binlog也会把被删掉的行的整行信息保存起来。所以,如果你在执原创 2022-07-07 21:07:58 · 941 阅读 · 0 评论 -
MySQL学习笔记6——MySQL完整性问题,性能瓶颈问题
了解了binlog之后,我们看InnoDB如何执行更新语句的。我们注意到写入redo log 的步骤分为prepare和commit两个阶段。这就是两阶段提交,主要为了让两份日志保持逻辑一致binlog会记录所有操作,并追加写入,系统定期做整库备份。假设我们找到的整库备份与需求记录点差一天,我们只需要从这个点开始根据binlog重做这一天所有的操作即可。假设不使用两阶段提交,而先写某一个日志,写完了再写另一个假设场景为,ID=2,这一行c=0;要将其加1,更新完第一个日志,之后再写第二个日志的时候发生了c原创 2022-07-07 16:24:21 · 775 阅读 · 0 评论 -
MongoDB vs MySQL vs Hive
mysql 是关系型数据库优点:缺点:不是关系型,属于文档型数据库,文档(多个键值对有序存放)是基础单元,类似于关系模型的行。存储方式: 虚拟内存+持久化。架构特点:可以通过副本集、分片实现高可用。适合场景:事件的记录,内容管理或者博客平台等等。数据处理:数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将数据存储在物理内存中,从而达到高速读写。优点缺点: 不支持事务。hive首先明确并不是一个数据库,而是数据仓库。Hive 不适合用于联机事务处理 (OLTP),也不提供实时查询功能原创 2022-06-29 20:51:12 · 776 阅读 · 0 评论 -
MySQL学习笔记5——优化问题(短连接,慢查询,QPS激增)
正常的短连接模式就是连接到数据库后,执行很少的SQL语句就断开,下次需要的时候再重连。如果使用的是短连接,在业务高峰期的时候,就可能出现连接数突然暴涨的情况。解决方法:(有损)在MySQL中,会引发性能问题的慢查询,大体有以下三种可能:1.索引设计问题可以创建online DDL,直接执行alter table,比较理想的是能够在备库先执行。假设你现在的服务是一主一备,主库A、备库B,这个方案的大致流程是这样的:2.语句没写好可能的情况:解决方法:改写SQL语句来处理。MySQL 5.7提供了查询原创 2022-06-28 20:14:49 · 503 阅读 · 0 评论 -
MySQL学习笔记4——全局锁,表锁,行锁,死锁检测
根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级锁和行锁三类。全局锁就是对整个数据库实例加锁,Flush tables with read lock (FTWRL)当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。典型应用场景:全库逻辑备份,不加锁的话,备份系统备份的得到的库不是一个逻辑时间点,这个视图是逻辑不一致的。怎么解决一致性视图问题?可重复度隔离级别官方自带的原创 2022-06-19 15:15:40 · 180 阅读 · 0 评论 -
MySQL学习笔记3——索引
比较常见的索引模型有三种,哈希表,有序数组,搜索树。为了处理多个key经过哈希函数映射到同一个数组位置的问题,解决方法一般是拉出一个链表如上图,维护一个身份证信息-姓名的表,根据身份证号查找名字。可以看见2和4两个虽然key值映射到的都是N,因此由此拉出一个链表,按顺序遍历这个链表,直到找到对应值问题在于,key值并不是递增的,只是单纯的往链表后追加,非有序带来的问题就是查询速度慢所以,哈希表适用于只有等值查询(筛选出一个字段等于特定值的所有记录)的场景假设是有序排列的,那么查找自然很方便,用二分法即原创 2022-06-09 20:45:14 · 168 阅读 · 0 评论 -
MySQL学习笔记2——事务隔离,MVCC突破数据库并发读写性能瓶颈
我们在之前数据库的基础篇大致谈过一些事务的隔离级别的内容具体见添加链接描述为什么事务要隔离ACID四大特性分别是,atomicity原子性.consistency一致性,isolation隔离性以及durability持久性。这里为什么需要隔离性,因为在实际工程当中,经常会出现一些问题,这些问题大致是:脏读不可重复读幻读为了解决上述问题,因此强调隔离性。事务的四种隔离级别读未提交:某事务还未commit,他的改变就能被别的事务看到。这种情况会出现上述三种问题。对锁的要求很低,即读不需.原创 2022-05-26 20:30:45 · 210 阅读 · 0 评论 -
MySQL学习笔记1——一条SQL的生命历程,查询与更新语句如何执行
引言:之前数据库模块更新过几篇数据库基础内容,这些内容基本处于学校教学阶段的知识,现在实际应用中MySQL用的更普遍一些,包括面试的时候这一块儿问的也是比较频繁,这里结合linxiaobin的实战45讲 总结一下学习笔记,以供大家一起学习讨论。基础架构作为基础架构的引入,作者先问了一个很多sqlboy可能都没有考虑过的问题,一条sql语句究竟是怎么运行的。盗图:架构主要包括server和引擎两个层次。server层涵盖大多数的核心服务功能,包括连接器,查询缓存,分析器,优化器,执行器 ,以及.原创 2022-05-06 20:08:49 · 553 阅读 · 0 评论 -
数据库笔记4——数据库安全(完整性约束),数据库设计(数据依赖,范式,具体方法和流程)
数据库安全概述数据库可能面临的问题:系统崩溃(恢复机制)并发控制人为操作输入数据不正确,破坏ACID特性,一致性不满足保护机制:视图和查询重写(系统自动根据其身份改写其查询)访问控制(普通用户,拥有某些特权的用户,数据库管理员DBA)标识和确认用户(密码,生物学特征)授权和权限检查可授予用户某项权限甚至允许其授予其他人权限角色数据加密审计追踪对某些表发生某些操作时设置审计追踪,记录关键log,相当于监控。统计数据库的安全这个主要的问题是,比如会有一个合法用户通过合法权限原创 2021-11-13 20:30:59 · 1486 阅读 · 0 评论 -
数据库笔记3——数据库管理系统体系结构,访问管理,数据分布,查询优化,恢复机制,并发控制
数据库管理系统体系结构DBMS内核内核自上而下1.编译器,语法分析器:分析结果产生语法树2.授权检查模块:看其是否有权限进行此类操作3.语义分析和查询处理模块:调用具体函数,以及下层访问管理(即物理层提供的访问原语)对系统进行文件操作4.访问管理再往下就是操作系统,再往上就是各种接口。DBMS运行状态下的进程结构单进程结构应用程序和DBMS捆绑连接成一个exe多进程结构当我们connect某个数据库时,为当前应用创建一个DBMS核心进程,构建pipe、socket多线程结构(Mul原创 2021-05-21 17:25:33 · 1722 阅读 · 0 评论 -
数据库笔记2——数据模型
数据模型任何一个数据系统都必须支持某种数据模型,数据模型是我们在数据库系统中用来描述现实世界的一种方法以及方法的数据结构。层次数据模型用树的结构来表达,其中最主要用PCR(parent-chid relationship)关系来表达一对多的关系。数据模式:用很多的PCR关系组成一个大型的PCR关系。每个PCR关系代表着一个一对多的关系,且每个记录都只能有一个父节点。但现实世界除了一对多的关系还有很多多对多的关系。且每个记录很可能有两个双亲节点,如一个学生可能既是某个班级的学生,又是某个学生会的成原创 2021-05-15 16:18:26 · 308 阅读 · 2 评论 -
数据库笔记1——文件&数据库的区别;数据,数据模型,数据模式;数据库三级模式与两级数据独立性,历史发展以及分类, 分布式数据库系统,数据库系统的组成
数据库简介DB:一个数据库最重要的东西:一个是实体,第二个就是他们之间的联系。DBMS:数据库管理系统,是用来存储管理数据库的。为什么要用数据库? 文件&数据库的区别首先明确文件:文件是一种字符流,并没有结构。而且只提供读写等基础操作。如果我们直接在文件上处理,针对不同类型甚至同一类型的文件,我们需要编写不同的代码去操作。文件无法解决并发操作,比如我们同时多个目标操作同一文件的读写文件没有故障恢复功能。文件的安全访问控制功能不完善。而我们用数据库管理系统,其优点有:提供高原创 2021-05-10 11:46:06 · 909 阅读 · 2 评论