![](https://img-blog.csdnimg.cn/444a314f3bcb4c9cbfcfbc10c3bf65d0.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据库-MySQL
文章平均质量分 64
数据库-MySQL
@Autowire
这个作者很懒,什么都没留下…
展开
-
2022/12/26 请你谈谈数据库事务机制?
操作的时候生产的读视图,Read View的最大作用是用来做可见性判断的,也就是说当某个事务在执行快照读的时候,对该记录创建一个Read View的视图,把它当作条件去判断当前事务能够看到哪个版本的数据,有可能读取到的是最新的数据,也有可能读取的是当前行记录的undo log中某个版本的数据。for update;那么此时undo log会生成一条与之相反的insert 语句【反向操作的语句】,在需要进行事务回滚的时候,直接执行该条sql,可以将数据完整还原到修改前的数据,从而达到事务回滚的目的。原创 2022-12-26 18:17:54 · 446 阅读 · 0 评论 -
2022/12/17 mysql 索引基本原理解读
索引是帮助MySQL 高效获取数据的数据结构,通过使用索引可以在查询的过程中,使用优化隐藏器,提高系统的性能。优势类似于书籍的目录索引,提高数据检索的效率,降低数据库的IO成本。通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗。劣势1)实际上索引也是一张表,该表中保存了主键与索引字段,并指向实体类的记录,所以索引列也是要占用空间的。原创 2022-12-17 16:27:10 · 438 阅读 · 0 评论 -
2022/12/17 MySQL索引失效的底层原理
前提是 where 条件后为索引字段——如果根据查询条件查询到数据的结果数量小于总数量的五分之一,则会走索引,否则会走全表扫描。因此,在进行范围查询时,比如>、< 、>=、原创 2022-12-26 11:42:09 · 765 阅读 · 0 评论 -
SQL中的not in 与 not exists
如果两个表中一个较小一个较大,则子查询表大的用exists,子查询表小的用in;如果子查询中返回的任意一条记录含有空值,使用 not in 则查询将不返回任何记录,如果子查询字段有非空限制,则可以使用not in;in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。备注: 如果子查询结果有任意一套记录含有null,使用 not in 查询不出来结果。not in(会调用子查询), not exists(会调用关联子查询)转载 2022-12-26 11:55:13 · 738 阅读 · 0 评论 -
left join on 和where条件的放置以及多个left join连接的执行顺序
数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。1 中间表 on条件: t1.size=t2.size and t2.name=‘AAA’ (条件不为真也会返回左表中的记录)2 再对中间表过滤 where 条件:where t2.name=‘AAA’1 中间表 on条件: t1.size=t2.size。顺序是先a,b组合成一个虚拟表,然后虚拟表再和C表关联。原创 2022-10-24 19:31:47 · 7080 阅读 · 1 评论 -
深入解析 MySQL binlog
MySQLBinlog原创 2022-06-23 09:55:34 · 2338 阅读 · 0 评论 -
数据库日志 redo log && bin log的解读
在InnoDB引擎中,redo log的大小是固定的,例如,它可以配置为一组四个文件,每个文件大小为1GB,因此总共可以记录4GB的操作。Statement模式记录的是所有数据库操作对应的SQL语句,如INSERT、UPDATE 、DELETE 等DML语句,CREATE 、DROP 、ALTER 等DDL,所以,从理论上讲,只要按顺序执行这些SQL 语句,就可以实现不同数据库间的数据复制。如果内存中没有查询到id=2的数据,那么它将以页的形式加载磁盘中的数据到内存,然后更新并保存到内存中。原创 2022-10-10 15:48:28 · 1244 阅读 · 0 评论 -
mysql_间隙锁_实验——for update
select * from tb_lock where id 5 for update;原创 2022-10-09 19:36:49 · 616 阅读 · 0 评论 -
mysql-date函数
INSERT INTO tb_user(user_id, user_name, event_day) VALUES(1001, "zhaoshuai01", NOW() ); # 2022-05-15 10:27:40INSERT INTO tb_user(user_id, user_name, event_day) VALUES(1002, "zhaoshuai02", CURDATE() ); # 2022-05-15INSERT INTO tb_user(user_id, user_name, e原创 2022-05-15 10:48:18 · 186 阅读 · 0 评论 -
Sharding-JDBC分库分表专题训练
1分库分表的基本理解分库 指的是将一个数据库拆分为多个数据库,分表 指的是将一个表拆分为多个表。随着业务快速发展,数据库中的数据量猛增,访问性能也变慢了,关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时需要把数据分散在不同的数据库中,使得单一数据库的数据量变小来缓解单一数据库的性能问题,从而达到提升数据库性能的目的。2分库分表的方式2.1垂直分表通常.原创 2021-09-13 18:01:29 · 294 阅读 · 0 评论 -
基于角色的权限控制模型RBAC
RBAC(Role-Based Access Control)即:基于角色的权限控制。通过角色关联用户,角色关联权限的方式间接赋予用户权限。在RBAC模型里面,有3个基础组成部分,分别是:用户、角色和权限。RBAC通过定义角色的权限,并对用户授予某个角色从而来控制用户的权限,实现了用户和权限的逻辑分离,极大地方便了权限的管理。User(用户):每个用户都有唯一的UID识别,并被授予不同的角色。Role(角色):不同角色具有不同的权限。Permission(权限):访问权限。用户-角色映射:用户原创 2021-07-29 22:45:15 · 3151 阅读 · 1 评论 -
SQL每日一题挑战计划
2021/4/1 查询"01"课程比"02"课程成绩高的学生的信息及课程分数-- 1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数 -- 确定学生的信息在Student表中,课程的分数在Course表中select a.* ,b.s_score as 01_score,c.s_score as 02_score from student a join score b on a.s_id=b.s_id and b.c_id='01'join score c on a.s_id=c.原创 2021-04-01 10:16:10 · 620 阅读 · 0 评论 -
请你谈谈SQL的优化机制?
1如何定位及优化SQL语句的性能问题?创建的索引有没有被使用到?或者说怎么才可以知道这条语句运行很慢的原因?对于低性能的SQL语句的定位,最重要也是最有效的方法就是使用执行计划,MySQL提供了explain命令来查看语句的执行计划。 我们知道,不管是哪种数据库,或者是哪种数据库引擎,在对一条SQL语句进行执行的过程中都会做很多相关的优化,对于查询语句,最重要的优化方式就是使用索引。 而执行计划,就是显示数据库引擎对于SQL语句的执行的详细情况,其中包含了是否使用索引,使用什么索引,使用的索引的相关信息等原创 2021-03-10 11:04:20 · 263 阅读 · 0 评论 -
请你谈谈数据库引擎机制?
1MySQL存储引擎MyISAM与InnoDB区别存储引擎Storage engine:MySQL中的数据、索引以及其他对象是如何存储的,是一套文件系统的实现。常用的存储引擎有以下:Innodb引擎:Innodb引擎提供了对数据库ACID事务的支持。并且还提供了行级锁和外键的约束。它的设计的目标就是处理大数据容量的数据库系统。MyIASM引擎(原本Mysql的默认引擎):不提供事务的支持,也不支持行级锁和外键。2MyISAM索引与InnoDB索引的区别?1 InnoDB索引是聚簇索引,MyISA原创 2021-03-10 11:11:18 · 126 阅读 · 1 评论 -
请你谈谈数据库的锁机制?
1对MySQL的锁了解吗当数据库有并发事务的时候,可能会产生数据的不一致,这时候需要一些机制来保证访问的次序,锁机制就是这样的一个机制。共享锁,又称为读锁,获得共享锁之后,可以查看但无法修改和删除数据。如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。排他锁,又称为写锁、独占锁。获准排他锁后,既能读数据,又能修改数据。如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。2原创 2021-03-10 08:54:07 · 251 阅读 · 0 评论 -
请你谈谈explain执行计划的理解?&& 索引覆盖的理解?
mysql可通过explain查看执行计划,通过执行计划,我们可以知道以下信息:1.表的读取顺序2.数据读取操作的操作类型3.哪些索引可以使用4.哪些索引被实际使用5.表之间的引用6.每张表有多少行被优化器查询字段理解idselect查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序,id的序号会递增,id值越大优先级越高,越先被执行select_typetype访问类型,sql查询优化中一个很重要的指标,结果值从好到坏依次是:sy原创 2021-04-21 14:13:55 · 360 阅读 · 0 评论 -
请你谈谈数据库视图机制?
1为什么要使用视图?什么是视图?为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系统提供了视图特性。所谓视图,本质上是一种虚拟表,在物理上是不存在的,其内容与真实的表相似,包含一系列带有名称的列和行数据。但是,视图并不在数据库中以储存的数据值形式存在。行和列数据来自定义视图的查询所引用基本表,并且在具体引用视图时动态生成。视图使开发者只关心感兴趣的某些特定数据和所负责的特定任务,只能看到视图中所定义的数据,而不是视图所引用表中的数据,从而提高了数据库中数据的安全性。2视图有哪些特点转载 2021-04-15 15:25:41 · 1229 阅读 · 0 评论 -
请你谈谈SQL注入的问题?
解决SQL注入问题的关键是:对所有可能来自用户输入的数据进行严格的检查、对数据库配置使用最小权限原则。1、所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中。当前几乎所有的数据库系统都提供了参数化SQL语句执行接口,使用此接口可以非常有效的防止SQL注入攻击。2、对进入数据库的特殊字符(’”^&*;等)进行转义处理,或编码转换。3、严格限制变量类型,比如整型变量就采用intval()函数过滤,数据库中的存储字段必须对应为int型。4、数转载 2021-04-15 14:11:37 · 163 阅读 · 0 评论 -
SQL参数化查询
参数化查询(Parameterized Query 或 Parameterized Statement)是指在设计与数据库链接并访问数据时,在需要填入数值或数据的地方,使用参数 (Parameter) 来给值,这个方法目前已被视为最有效可预防SQL注入攻击 (SQL Injection) 的攻击手法的防御方式。MySQL中存储过程(MySQL从5.0以后版本支持存储过程)参数一律以“?”开头在使用参数化查询的情况下,数据库服务器不会将参数的内容视为SQL指令的一部份来处理,而是在数据库完成 SQL 指令原创 2021-04-07 20:14:27 · 528 阅读 · 0 评论 -
请你谈谈Mysql Join算法原理?
1Mysql Join算法原理1Simple Nested-Loop Join(简单的嵌套循环连接)嵌套循环连接算法就是一个双层for 循环,通过循环外层表的行数据,逐个与内层表的所有行数据进行比较来获取结果。select * from user tb1 left join level tb2 on tb1.id=tb2.user_idfor(user表的行 ur : user表){ for(level表的行 lr : level表){ if(ur.id == lr.user_id){原创 2021-03-20 10:18:48 · 125 阅读 · 1 评论 -
请你谈谈数据库设计的全过程?
1规范化数据库设计数据库系统的生存期:1规划阶段 2需求分析阶段 3概念设计阶段 4逻辑设计阶段 5物理设计阶段 6数据库的实现 7数据库的运行和维护1规划阶段:系统调查、可行性分析:从技术 经济 效益 法律等对建立数据库系统进行可行性分析,写出可行性分析报告,确定数据库的总目标;2需求分析阶段:以需求说明书的形式确定下来,分析用户的活动,产生业务流程图;确定系统范围,产生系统关联图;分析用户活动涉及的数据,产生数据流图;分析系统数据,产生数据字典;3概念设计阶段:ER方法4逻辑设计阶段:将概原创 2021-03-21 09:31:45 · 246 阅读 · 0 评论 -
请你谈谈规范数据库设计以及范式的理解?
1,所属的类不同:sleep方法是定义在Thread上wait方法是定义在Object上2,对于锁资源的处理方式不同sleep不会释放锁wait会释放锁3,使用范围:sleep可以使用在任何代码块wait必须在同步方法或同步代码块执行4,与wait配套使用的方法void notify()Wakes up a single thread that is waiting on this object’s monitor.译:唤醒在此对象监视器上等待的单个线程void notifyAll原创 2021-02-27 19:26:33 · 313 阅读 · 0 评论 -
01_MySQL数据库操作
1数据库的分类1 关系型数据库 ( SQL )MySQL , Oracle , SQL Server , SQLite , DB2 , …关系型数据库通过外键关联来建立表与表之间的关系2 非关系型数据库 ( NOSQL )Redis , MongoDB , …非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定2数据库管理系统 ( DataBase Management System )数据库管理软件 ,科学组织和存储数据 , 高效地获取和维护数据原创 2021-02-21 20:21:16 · 401 阅读 · 0 评论 -
02_MySQL—外键、DML、DQL、排序、分页、子查询
1数据管理1外键(了解即可)1 建表时指定外键约束-- 创建外键的方式一 : 创建子表同时创建外键-- 年级表 (id\年级名称)CREATE TABLE `grade` (`gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级ID',`gradename` VARCHAR(50) NOT NULL COMMENT '年级名称',PRIMARY KEY (`gradeid`)) ENGINE=INNODB DEFAULT CHARSET原创 2021-02-22 08:52:52 · 223 阅读 · 0 评论 -
03_MySQL—MySQL函数
1MySQL函数1常用函数数据函数 SELECT ABS(-8); /*绝对值*/abs SELECT CEILING(9.4); /*向上取整*/ceiling SELECT FLOOR(9.4); /*向下取整*/ floor SELECT RAND(); /*随机数,返回一个0-1之间的随机数*/rand SELECT SIGN(0); /*符号函数: 负数返回-1,正数返回1,0返回0*/sign字符串函数 SELECT CHAR_LENGTH('狂神说坚持就能成功');原创 2021-02-22 10:52:32 · 97 阅读 · 0 评论 -
04_MySQL_用户管理
1用户管理基本命令/* 用户和权限管理 */ ------------------用户信息表:mysql.user-- 刷新权限FLUSH PRIVILEGES(privileges)-- 增加用户 CREATE USER kuangshen IDENTIFIED(identified) BY '123456'CREATE USER 用户名 IDENTIFIED BY [PASSWORD] 密码(字符串) - 必须拥有mysql数据库的全局CREATE USER权限,或拥有INSER原创 2021-02-23 09:46:55 · 101 阅读 · 0 评论