MySQL
文章平均质量分 66
数据库基础知识
Listen-Y
学无止境
展开
-
MySQL~为什么推荐自增 id 作为主键
文章目录页的概念页分裂与页合并页的概念在计算机里,无论是内存还是磁盘,操作系统都是按页的大小进行读取的(页大小通常为 4 kb),磁盘每次读取都会预读,会提前将连续的数据读入内存中,这样就避免了多次 IO,这就是计算机中有名的局部性原理,即我用到一块数据,很大可能这块数据附近的数据也会被用到,干脆一起加载,省得多次 IO 拖慢速度, 这个连续数据有多大呢,必须是操作系统页大小的整数倍。所以MySQL 的页,默认值为 16 KB,也就是说对于 B+ 树的节点,最好设置成页的大小(16 KB),这样一个原创 2021-03-15 23:33:43 · 1569 阅读 · 0 评论 -
MySql~面试题目之写一个InnoDB引擎下事务死锁的例子
文章目录死锁建表客户端一客户端二分析死锁所谓死锁就是必须发生在下面的四个必要条件资源互斥条件保持与请求条件不可剥夺条件循环等待条件简而言之就是访问的资源有互斥性, 也就是说是资源使不可抢占式或者是可消耗型资源多个事务都已经占有资源, 并且想获取其他资源, 占有的资源有不可剥夺性, 想访问的资源被循坏等待比如下面这个例子建表CREATE TABLE `test1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varch原创 2021-02-09 19:53:17 · 420 阅读 · 0 评论 -
MySQL~InnoDB的备份和主从复制
文章目录备份Hot Backup(热备)Cold Backup(冷备)Warm Backup(温备)快照备份主从复制复制的工作原理主从复制的作用快照+复制的备份架构备份根据不同的类型来划分备份的方法,可以分为以下几种:Hot Backup(热备)是指在数据库运行时进行直接备份,对正在运行的数据库没有任何影响热备份的优点如下:1.可在表空间或数据文件级备份,备份时间短, 还不会阻塞sql执行。2.备份时数据库仍可使用。3.可达到秒级恢复(恢复到某一时间点上)。4.可对几乎所有数据库实原创 2020-12-15 18:28:42 · 574 阅读 · 1 评论 -
MySQL~InnoDB关键特性(插入缓存、俩次写、自适应哈希索引、异步IO、刷新邻接页)
文章目录插入缓存 (Insert Buffer)两次写 (doublewrite)自适应哈希索引 (AHI)异步IO (AIO)刷新邻接页插入缓存 (Insert Buffer)插入缓存是物理数据页的一个组成部分, 并不是InnoDB缓冲池的组成部分一般情况下,主键是行唯一的标识符。通常应用程序中行记录的插入顺序是按照主键递增的顺序进行插入的。因此,插入聚集索引一般是顺序的,不需要磁盘的随机读取。因为,对于此类情况下的插入,速度还是非常快的。如果索引是非聚集的且不唯一。在进行插入操作时,数据的存放原创 2020-12-15 15:50:47 · 347 阅读 · 0 评论 -
MySQL~MVCC多版本并发控制机制实现原理(read view、undo log、实现RC和RR)
文章目录MVCC如何多版本Read ViewUndo logMVCC实现原理更新操作实现原理查询操作的实现原理当前读和快照读MVCC如何帮助锁实现RC和RRMVCCMVCC是一种多版本并发控制机制。大家都应该知道,使用锁和锁协议来实现相应的隔离级别来进行并发控制,味道虽好但因为锁会造成事务阻塞,导致并发性能会受到一定的影响。而多版本并发控制使得对同一行记录做读写的事务之间不用相互阻塞等待(写写还是要阻塞等待,因为事务对数据进行更新时会加上排他锁),提高了事务的并发能力,可以认为MVCC是一种 解决读原创 2020-12-14 17:39:40 · 832 阅读 · 0 评论 -
MySQL~认识事务、事务的分类、事务的实现原理、事务注意事项
文章目录认识事务原子性一致性持久性隔离性事务的使用事务的分类扁平事务带有保存点的扁平事务链事务嵌套事务分布式事务XA事务内部XA事务事务的实现原理redoundo事务注意事项认识事务谈到事务,那肯定少不了ACID的特性,ACID是以下几个单词的缩写,下面一一对其进行介绍原子性(atomicity)一致性(consistency)隔离性(isolation)一致性(durability)原子性原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。例如我们去ATM原创 2020-12-14 16:45:55 · 474 阅读 · 0 评论 -
MySQL~InnoDB引擎解决脏读,不可重复读,幻读,丢失更新的原理(lock事务锁、自增长锁、Record Lock、Gap Lock、Next-Key Lock、死锁)
文章目录Lock事务锁InnoDB引擎中的行锁事务中的行锁机制俩段锁行锁的三个实现算法事务的四种隔离级别实现原理Read UnCommitted(读未提交)Read Committed(读提交)Repeatable Read(可重复读)丢失更新Serializable (串行化)自增长锁死锁Lock事务锁在了解数据库锁之前,首先就要区分开lock和latch。在数据库中,lock和latch虽然都是锁,却有着截然不同的含义。latch通常被我们称为闩锁(轻量级锁),因为其要求锁定的时间必须非常原创 2020-12-10 13:41:24 · 1024 阅读 · 0 评论 -
MySQL~B+树索引(聚集索引与非聚集索引)、联合索引、覆盖索引、哈希索引、全文索引
文章目录索引索引使用场景B+树索引聚集索引非聚集索引索引在数据库中,表、数据、索引之间的关系就类似于书籍、书籍内容、书籍目录。倘若不使用索引,则MySQL必须遍历整个表,直到找到数据,而表越大,查询的时间则越长,则数据库的效率也就越低。而索引就类似于书籍的目录,可以帮助我们快速的定位、检索到需要的数据行,对提高数据库的性能有着很大的帮助。在MySQL中,索引是一种特殊的文件,其中包含着对数据表中所有记录的引用指针。各类索引有各自的数据结构实现。索引使用场景索引不是越多越好, 他原创 2020-12-08 14:13:56 · 666 阅读 · 0 评论 -
MySQL~从引擎选择、表的设计、索引设计、sql语句和连接池这五个方面优化数据库
文章目录引擎选择数据库引擎MYISAM与InnoDB的区别表的设计第一第二第三范式索引优化索引分类索引数据结构索引使用原则sql语句优化引擎选择数据库引擎MYISAM与InnoDB的区别MyISAM是Mysql5之前使用的, 现在大多使用InnoDBMYISAM不支持事务, InnoDB支持事务MYISAM支持的是表锁, 而InnoDB支持的是行锁, 所以在并发执行的效率上来说InnoDB是好好于MySAM的MYISAM不支持外键约束, InnoDB支持外键约束, 所以在数据安全性来说Inno原创 2020-11-23 12:40:53 · 447 阅读 · 0 评论 -
在阿里云服务器Linux系统上从头到尾实现Webapp的部署(安装卸载JDK、安装Tomcat、安装配置MySQL)
文章目录安装JDK卸载JDK(如果有需要)安装Tomcat手动下载Tomcat验证Tomcat是否启动成功安装配置MySQL部署web安装JDK输入yum list | grep jdk选择devel是软件包中的典型命名格式 devel表示这个包是开发工具相关的 里面包含内容是最完整的x86表示cpu架构是x86_64 还有openjdk表示开源版本输入yum install java-1.8.0-openjdk-devel.x86_64 开始下载遇到问你 is this原创 2020-07-27 10:45:27 · 1279 阅读 · 1 评论 -
MySql~表结构的修改(使用alter实现字段的增删改)、对比modify与change的区别
文章目录修改表的名字show查询表的详细结构modify修改字段类型和约束add增加字段普通增加字段指定位置增加字段drop删除一个字段change修改字段名modify与change的区别修改表的名字mysql> show tables;+---------------------+| Tables_in_java_7_22 |+---------------------+| stu |+---------------------+1 row in s原创 2020-07-22 20:17:44 · 658 阅读 · 0 评论 -
MySQL~详细介绍事务的一个重要特性--隔离性 (解决脏读、不可重复读、幻读)
文章目录介绍脏读、不可重复读、幻读脏读不可重复读幻读如何理解隔离性MySQL的隔离级别read uncommittedread committedrepeatable readserializable在之前的文章中我有详细介绍过什么是数据库索引? 索引的数据结构是什么? 什么是事务? 如果还有不懂点解跳转MySQL~教你满分回答什么是数据库索引? 索引的数据结构是什么? 什么是事务?介绍脏读、不可重复读、幻读脏读假如一个学校正在考试 学生甲在答题 学生乙在偷瞄 此时甲写了一个答案还没有写完原创 2020-06-15 13:13:13 · 2025 阅读 · 1 评论 -
MySQL~教你满分回答什么是数据库索引? 索引的数据结构是什么? 什么是事务?
文章目录1.什么是数据库索引?1.1概念1.2作用1.3使用场景1.4如何使用2.索引的数据结构是什么?2.1可以是二叉搜索树吗?2.2可以是哈希表吗?2.3可以是B-树吗?2.4可以是B+树吗?2.5explain查看SQL的执行3.什么是事务?3.1概念3.2如何使用3.2.1 commit全部成功3.2.2rollback全部失败3.3事务的特点1.什么是数据库索引?1.1概念索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有原创 2020-06-01 18:47:47 · 908 阅读 · 0 评论 -
MySQL~什么是Java的JDBC编程、如何利用JDBC实现数据库的增删改查
文章目录必备条件Java的数据库编程JDBC概念JDBC优势JDBC使用步骤利用JDBC实现增加(insert)利用JDBC实现删除(delete)利用JDBC实现修改(update)利用JDBC实现查找(select)必备条件一种编程语言一种数据库数据库驱动包下载数据库驱动包Java的数据库编程JDBC概念JDBC 是一种用于执行sql语句的Java API, 他是Java中的数据库连接规范,这个API由 java.sql.,javax.sql. 包中的一些类和接口组成,它为Java原创 2020-05-31 20:55:37 · 600 阅读 · 1 评论 -
MySQL~数据库的聚合查询(聚合函数、group by)与联合查询(内连接、外连接)实现多表查询
文章目录聚合查询聚合函数COUNTSUMACGMAXMINGROUP BY 语句HAVING 语句联合查询笛卡尔积内连接外连接左外连接右外连接自连接子查询单行子查询多行子查询IN 处理多行EXISTS 处理多行IN 与 EXISTS 的区别合并查询UNIONUNION ALL聚合查询聚合函数COUNT返回查询到的数量mysql> select * from emp;+----+---------+-----------+---------+| id | name | role原创 2020-05-30 19:53:33 · 8259 阅读 · 0 评论 -
MySQL~数据库约束(null、unique、primary key、default、foreign key、check、auto_increment) 与表的设计(一对一、一对多、多对多)
文章目录数据库约束not nulluniquedefaultprimary keyforeign key实例check(了解)auto_increment表的设计一对一一对多多对多实例数据库约束not null指定某列的存储不能为null值unique保证某列的每行必须有唯一的值default规定给列赋值时的默认值primary key主键约束,是not null 与 unique 的结合,确保某列的每行的赋值不能为null 并且是唯一的foreign key外键约束原创 2020-05-27 16:13:58 · 792 阅读 · 0 评论 -
MySQL~数据库表中数据的增删查改(基础篇)
文章目录增加建表多行数据 全列插入多行数据 指定列插入查询全列查询指定列查询查询字段为表达式查询字段 名字重定义去重 distinct排序 order by条件查询运算符增加建表mysql> create database test_exam;Query OK, 1 row affected (0.00 sec)mysql> use test_exam;Database changedmysql> create table exam ( -> id int,原创 2020-05-25 12:48:51 · 1437 阅读 · 0 评论 -
MySQL~数据库的数据类型、库的基础操作(创建使用删除)、表的基础操作(创建查看删除)
文章目录数据库的数据类型数值类型字符串类型日期类型数据库的操作显示当前数据库创建数据库使用数据库删除数据库表的操作创建表查看表结构删除表重点总结数据库的数据类型ps:数值型可以以指定为无符号(unsigned),表示不取负数。黄色表示常用。数值类型bit(M)m指定位数,默认为一。二进制数,m的范围1–64数值范围0–2^m-1tinyint1字节smallint2字节int4字节bigint8字节float(m,d)4字节单精度,m指定长度,d指定小数位数,会发原创 2020-05-23 17:08:35 · 607 阅读 · 0 评论