数据库
奔跑的废柴
卧久者行必远,伏久者飞必高
展开
-
【Mysql】undo log
占坑嗷https://www.cnblogs.com/f-ck-need-u/archive/2018/05/08/9010872.htmlundo log是回滚日志,提供回滚操作。undo用来回滚行记录到某个版本。undo log一般是逻辑日志,根据每行记录进行记录。undo log和redo log记录物理日志不一样,它是逻辑日志。可以认为当delete一条记录时,undo log中会记录一条对应的insert记录,反之亦然,当update一条记录时,它记录一条对应相反的update记录。.原创 2020-11-22 21:01:13 · 188 阅读 · 0 评论 -
Mysql面试题1
依旧是:看到了就放这1.问题统计行数count()、count(1)、count(column)的区别答案性能比较:count() = count(1) > count(column)count()和count(1)两者的统计方式完全相同,包含null的行。count(column) 如果列定义时不允许为null,那么统计满足查询条件的不为null的总行数。2.问题 慢查询怎么发现参考:https://www.cnblogs.com/zhncnblogs/p/139601.原创 2020-11-21 18:28:55 · 352 阅读 · 0 评论 -
【Mysql】存储引擎Innodb和MyISAM的区别?什么时候用?
1.区别1.1事务Innodb支持事务,MyISAM不支持。1.2外键Innodb支持外键,MyISAM不支持。1.3索引Innodb是聚集索引,主键索引的叶子节点才有值,而其他索引只有向主键索引的指针。MyISAM是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和其他索引是独立的。1.4锁粒度Innodb最小粒度是行锁,MyISAM最小粒度是表锁。1.5表的行数Innodb不保存表的行数,需要select count(*)…MyISAM中有一个变量保存表的行数,所原创 2020-11-21 13:23:44 · 651 阅读 · 0 评论 -
【数据库理论】事务四大特性&隔离级别和解决的问题
1.什么是事务事务是一个完整的业务逻辑单元,不可再分。2.TCLTCL:commit,rollback3.事务的特性原子性:事务是最小的工作单元,不可再分一致性:保证多条DML语句同时成功或同时失败隔离性:事务A与事务B之间隔离持久性:最终数据必须持久化到硬盘文件里4.事务的隔离性隔离级别:4种第一级别:读未提交(read uncommited)对方事务还没有提交,我们可以...原创 2019-12-25 20:02:50 · 295 阅读 · 0 评论 -
【数据库理论】关系型数据库的第一 第二 第三 BCNF范式
0.一些概念码设 K 为某表中的一个属性或属性组,若除 K 之外的所有属性都完全函数依赖于 K(这个“完全”不要漏了),那么我们称 K 为候选码,简称为码。1.第一范式 属性的原子性数据库中的每一列都是不可分割的像图上这种就不可以2.第二范式 属性完全依赖于主键第二范式是在第一范式的基础上建立起来的,即满足第二范式必须先满足第一范式。第二范式要求每一行必须能被唯一的区分,这个用来区分的属性就是主键。完全依赖于主键,必须依赖于主键的所有属性,而不是部分依赖。3.第三范式 无非主属性对于原创 2020-11-21 11:31:22 · 606 阅读 · 0 评论 -
【Mysql】join
写的很乱 。暂时做个笔记。【不要看】明天来整理!使用 join 语句,性能比强行拆成多个单表执行 SQL 语句的性能要好;如果使用 join 语句的话,需要让小表做驱动表。但是,你需要注意,这个结论的前提是“可以使用被驱动表的索引”。2.要不要用join?如果可以使用 Index Nested-Loop Join 算法,也就是说可以用上被驱动表上的索引,其实是没问题的;如果使用 Block Nested-Loop Join 算法,扫描行数就会过多。尤其是在大表上的 join 操作,这.原创 2020-11-14 21:20:37 · 167 阅读 · 0 评论 -
【Mysql】索引的类型、索引相关问题
比较乱,暂时笔记,【点进来的没有必要看】B+ 树这种索引结构,可以利用索引的“最左前缀”,来定位记录。第一原则是,如果通过调整顺序,可以少维护一个索引,那么这个顺序往往就是需要优先考虑采用的。那些不符合最左前缀的部分,会怎么样呢?而 MySQL 5.6 引入的索引下推优化(index condition pushdown), 可以在索引遍历过程中,对索引中包含的字段先做判断,直接过滤掉不满足条件的记录,减少回表次数。...原创 2020-11-13 18:16:38 · 146 阅读 · 0 评论 -
【mysql45讲】什么时候会使用内部临时表union&group by
1.什么时候会使用内部临时表1.1 union举例:(select 1000 as f) union (select id from t1 order by id desc limit 2);这里的内存临时表起到了暂存数据的作用,而且计算过程还用上了临时表主键 id 的唯一性约束,实现了 union 的语义。如果把上面这个语句中的 union 改成 union all 的话,就没有了“去重”的语义。这样执行的时候,就依次执行子查询,得到的结果直接作为结果集的一部分,发给客户端。因此也就不需要临时原创 2020-09-20 15:56:35 · 711 阅读 · 0 评论 -
【mysql45讲】内存表 Memory 存储引擎
1.Memory索引的数据结构1.1 Memory索引的默认数据结构内存表的数据部分以数组的方式单独存放,而主键 id 索引里,存的是每个数据的位置。主键 id 是 hash 索引,可以看到索引上的 key 并不是有序的。1.2 Memory和InnoDB索引的区别1.2.1 组织结构的区别InnoDB 引擎把数据放在主键索引上,其他索引上保存的是主键 id。这种方式,我们称之为索引组织表(Index Organizied Table)。而 Memory 引擎采用的是把数据单独存放,索引上保存原创 2020-09-20 15:03:22 · 523 阅读 · 0 评论 -
【mysql45讲】临时表
1.临时表的特点1.建表语法是 create temporary table…修改表名语法是alter table … rename to…2.只对创建它的session可见,其他线程不能访问。当这个session结束会被自动删除。3.临时表可以跟普通表同名。4.session内有同名的普通表和临时表时,show create以及增删改查语句访问的是临时表。5.show tables不显示临时表2.临时表的应用可以用于复杂查询的优化。其中,分库分表的跨库查询就是一个典型应用场景。举例:se原创 2020-09-20 13:50:27 · 513 阅读 · 0 评论 -
【mysql45讲】redo log & binlog
1.WALWAL 的全称是 Write-Ahead Logging,它的关键点就是先写日志(写日志也是写磁盘,不过是顺序写,所以快),再写磁盘。只要 redo log 和 binlog 保证持久化到磁盘,就能确保 MySQL 异常重启后,数据可以恢复。2.redo log介绍2.1 redo log循环写redo log属于InnoDB日志。redo log 是固定大小的,比如可以配置为一组 4 个文件,每个文件的大小是 1GB,那么总共就可以记录 4GB 的操作。从头开始写,写到末尾就又回到开原创 2020-09-20 11:49:51 · 320 阅读 · 0 评论 -
【mysql索引】索引的数据结构B+Tree
废物大学生,在线写博客1.为什么选用b+树1.1 为什么不用二叉树1.1.1 二叉树特点二叉树特点是每个结点最多只能有两棵子树,且有左右之分。1.1.2 二叉树缺点二叉树可能是不平衡的,最差的情况是退化到线性链表。1.2 为什么不用平衡二叉树平衡二叉树解决了二叉树的线性链表问题。1.2.1 平衡二叉树特点平衡二叉树:左子树和右子树的深度之差绝对值小于等于1。非叶子节值大于左边子节点、小于右边子节点。没有值相等重复的节点。1.2.2 平衡二叉树缺点1.搜索效率不足。一般来说,在.原创 2020-09-19 11:43:17 · 313 阅读 · 0 评论 -
【高性能mysql&Mysql45讲】Mysql中的MVCC多版本并发控制 & 事务隔离
MVCC是什么可以认为MVCC是多版本并发控制的一个变种原创 2020-09-18 16:50:21 · 306 阅读 · 0 评论 -
【mysql45讲】自增主键用完怎么办&不同种类自增主键的区别
1.自增主键为什么会用完因为计算机里数的大小是有上限的。2.达到上限会出现什么情况2.1 在表结构中定义的自增id达到上限后,自增id不变,这就会造成错误。因此,在建表的时候需要考察表是否有可能达到这个上限,如果有可能,就应该创建成 8 个字节的 bigint unsigned。2.2 InnoDB 系统自增 row_id如果你创建的 InnoDB 表没有指定主键,那么 InnoDB 会给你创建一个不可见的,长度为 6 个字节的 row_id。InnoDB 维护了一个全局的 dict_sys原创 2020-09-18 14:59:16 · 210 阅读 · 0 评论 -
【mysql45讲】自增主键
1.自增主键的作用使主键索引尽量递增的顺序,避免了页分裂,因此索引更紧凑。但不能保证是连续递增的。2.自增值的保存位置1.MyISAM 引擎的自增值保存在数据文件中2.InnoDB的自增值保存在内存里,在Mysql8.0之后,将自增值的变更记录存在了redo log中,重启时依靠redo log恢复之前的值。3.自增值的修改机制当主键id被设为自增后,新插入记录的id按以下规则:1.插入记录的id为0,null,或未指定值时,使用自增值。2.插入记录指定了id,就使用此id。自增值的变化原创 2020-09-17 16:00:34 · 250 阅读 · 0 评论 -
【mysql45讲】InnoDB间隙锁与加锁规则
一、间隙锁的概念1.间隙锁的作用解决幻读问题2.间隙锁的意思间隙锁,锁的就是两个值之间的间隙。3.间隙锁的冲突关系间隙锁只跟“向间隙中插入记录”存在冲突关系。4.next-key-lock间隙锁和行锁合称next-key-lock。每个next-key-lock是左开右闭区间。比如有两条记录a和b,执行语句select * from t for update时,要把整个表锁起来,就形成了三个next-key-lock: (-∞,a],(a,b],(b,supernum]。ps:supe原创 2020-09-16 14:35:04 · 1606 阅读 · 1 评论 -
【mysql45讲】全局锁、表级锁(表锁、MDL)、行锁的作用与区别
1.全局锁定义:全局锁就是对整个数据库加锁。加全局读锁的命令:Flash tables with read lock(FTWRL)。这个命令执行后,会阻塞 数据更新语句、数据定义语句、更新事务的提交。为什么用全局读锁而不是readonly:当客户端发生异常时,FTWRL会自动释放全局锁,库回到正常状态;readonly不会,数据库就一直保持着不可写状态。为什么不用single-transaction:在支持事务的引擎中(如InnoDB),建议使用single-transaction。将启原创 2020-09-15 10:11:28 · 1028 阅读 · 0 评论 -
ORA-39002: 操作无效 ORA-39070: 无法打开日志文件
原因可能是没有目录,检查目录是否存在。比如,我执行了create directory dump_dir as ‘c:\dir’;//这里没报错expdp itsoft/It123456 schemas=itsoft dumpfile=itsoft_expdp.dmp directory=dump_dir报错的原因是我c:\下没有dir这个目录...原创 2020-04-21 19:36:30 · 4817 阅读 · 0 评论 -
【oracle】ORA-02095: 无法修改指定的初始化参数
1.检查是否sys登录2.在更改语句加上scope=spfile原创 2020-03-03 16:55:27 · 1175 阅读 · 1 评论 -
Mysql-查询
给列起别名:as可以省略不能是中文,中文需要单引号’’查询:字符串需要用单引号’’条件查询:不等于 <>(或者!=)between…and…是闭区间(必须左小右大)除了应用在数字,还可以应用于字符NULL不是一个值,不能等号。必须用is null或is not nulland和or联合起来用,加括号()模糊查询:‘%_%’中_代表任意一个字符要查带_的,需要...原创 2019-12-28 17:48:12 · 140 阅读 · 0 评论 -
Mysql笔记-建表插入复制修改
1.创建表create table 表名(字段名1 数据类型,字段名1 数据类型,字段名1 数据类型,…);Mysql中的数据类型char(6):固定分配6个位置vachar(6):动态分配,存5个就分配5当数据长度不变时,用char。长度不确定,用varchar。表名在数据库中建议以t_或tbl_开始2.插入数据...原创 2019-12-20 18:33:01 · 133 阅读 · 0 评论