Mysql
文章平均质量分 92
ZJE_ANDY
这个作者很懒,什么都没留下…
展开
-
Mysql----日志系统redo log 和 bin log
目录一、mysql大概架构二、redo log(重做日志)2.1 WAL机制 (Write-Ahead Logging )2.2 redo log结构2.3 redo log 和 crash safe三、bin log (归档日志)3.1 bin log有什么用3.2 两阶段提交3.3 为什么需要两阶段提交小结一、mysql大概架构大体来说,mysql可以分为Server层和存储引擎两部分。Server 层包括连接器、查询缓存、分析器、优化器...转载 2021-02-10 16:06:06 · 322 阅读 · 0 评论 -
Mysql-----联合索引和最左匹配
目录一、最左匹配二、联合索引失效的情况2.1 不遵循最左匹配原则2.2 范围查询右边失效原理2.3 like索引失效原理三、实战一、最左匹配讲联合索引,一定要扯最左匹配!最左匹配:所谓最左原则指的就是如果你的 SQL 语句中用到了联合索引中的最左边的索引,那么这条 SQL 语句就可以利用这个联合索引去进行匹配,值得注意的是,当遇到范围查询(>、<、between、like)就会停止匹配。假设,我们对(a,b)字段建立一个索引,也就是说,你w...原创 2021-02-08 18:16:51 · 6733 阅读 · 1 评论 -
Mysql-----聚集索引和辅助索引(非聚集索引)
目录一、索引二、聚集索引和非聚集索引2.1 实例讲解聚集索引2.2 实例讲解非聚集索引一、索引数据库只做两件事情:存储数据、检索数据。而索引是在你存储的数据之外,额外保存一些路标(一般是B+树),以减少检索数据的时间。一张表可以建立任意多个索引,每个索引可以是任意多个字段的组合。索引可能会提高查询速度(如果查询时使用了索引),但一定会减慢写入速度,因为每次写入时都需要更新索引,所以索引只应该加在经常需要搜索的列上,不要加在写多读少的列上。二、聚集索引和非聚集索引...转载 2021-01-30 21:22:58 · 1042 阅读 · 2 评论 -
Mysql的SQL语句分析-------explain语句
目录一、为什么要使用explain语句二、explain各个字段2.1 id1.2 select_type1.3 table1.4 type1.5 possible_keys1.6 key1.7 key_len1.8 ref1.9 rows1.10 filtered1.11 extra总结一、为什么要使用explain语句我们很多时候编写完一条SQL语句,往往想知道这条SQL语句执行是否高效。或者说,我们建立好...转载 2021-01-30 14:38:25 · 272 阅读 · 0 评论 -
彻底搞清分库分表(垂直分库,垂直分表,水平分库,水平分表)
一、背景随着公司业务快速发展,数据库中的数据量猛增,访问性能也变慢了,优化迫在眉睫。分析一下问题出现在哪儿呢? 关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。方案1:通过提升服务器硬件能力来提高数据处理能力,比如增加存储容量 、CPU等,这种方案成本很高,并且如果瓶颈在MySQL本身那么提高硬件也是有很的。方案2:把数据分散在不同的数据库中,使得转载 2021-01-26 13:47:16 · 921 阅读 · 0 评论 -
mysql语句及优化之----join以及join的优化
目录一、内连 inner join二、左连 left join 和 右连 right join三、全连 full join四、join语句的底层算法4.1 NLJ算法(index Nested-Loop Join)4.11 驱动表与被驱动表4.2 BNL算法(Block Nested-Loop Join)4.3 BKA算法(Batched Key Access)4.3.1 MRR(即:Multi-Range Read)4.3.2 BKA算法4.4 Hash...原创 2021-01-24 16:43:13 · 940 阅读 · 0 评论 -
Mysql(十二) MVCC并发版本控制
一、什么是MVCCMVCC (Multiversion Concurrency Control),即多版本并发控制技术,MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问。你可能会问,实现并发访问的话,加锁不就行了?但是问题就是,加锁解锁耗费资源很多,所以可以使用MVCC来作为替代方案。MVCC可以不加锁来解决多并发的问题。用简单的话说:MVCC的意思就是对数据库的任何修改的提交都不会直接覆盖之前的数据,...原创 2020-11-08 21:05:54 · 402 阅读 · 0 评论 -
Mysql(十一) mysql的锁归纳
目录一、读锁(又叫共享锁、S锁)和写锁(又叫排它锁、X锁)事务与锁什么时候上锁InnoDB引擎:Myisam引擎:二、行锁和表锁行锁和表锁的优缺点:行锁触发死锁的原因表锁为什么不会触发死锁?1.记录锁2. 间歇锁3. 临键锁这章要点:三、 意向锁存在意义为什么没有意向锁的话,行锁和表锁就不能共存意向锁如何让行锁和表锁共存?四、乐观锁和悲观锁悲观锁乐观锁总结:一、读锁(又叫共享锁、S锁)..原创 2020-11-07 13:11:45 · 203 阅读 · 0 评论 -
Mysql(十) 两大引擎 Innodb和Myisam的区别
一、InnoDB是聚集索引,Myisam是非聚集索引(或者叫辅助索引)在磁盘中,Innodb存储的文件是frm、ibd,而Myisam是frm、MYD、MYI。 Innodb:frm是表定义文件,ibd是数据文件 Myisam:frm是表定义文件,myd是数据文件,myi是索引文件。可以看到,Myisam比Innodb多了一个索引文件,为什么呢?因为Myisam用的是非聚集索引。聚集索引:意思是在B+树索引中,B+树的叶子节点保存了完整的数据表的数据记录。非聚...原创 2020-11-05 19:53:19 · 166 阅读 · 0 评论 -
Mysql(九)----事务的ACID和隔离级别
目录一、 事务的四个特征:ACIDA(atomicity):C(consistency):I(isolation):D(durability):二、事务的隔离级别1. 读未提交(read uncommitted) ---会存在脏读、不可重复读、幻读问题2. 读已提交(read committed)---会存在不可重复读、幻读(Oracle、sql server默认隔离级别)3. 可重复度(repeatable read)---会存在幻读(Mysql默认的隔离级别)出现原创 2020-11-04 15:02:03 · 209 阅读 · 0 评论 -
Mysql优化策略
一、实践中如何优化SQL1.1 插入数据时以主键顺序插入因为InnoDB底层的索引用的是B+树,而B+树的节点索引值如果不按顺序插入的话,就会导致频繁分裂,这会很耗费性能的。所以在平时的开发过程中,如果没有特别的业务需要,应该尽可能的使用自增列作为主键。1.2 优化insert语句a.多条分开的insert语句合并成一条sql语句如果需要对一张表同时插入多行数据,应该尽量使用一条sql语句进行插入,避免用多条sql语句插入多行数据,这样可以大大地缩减客户端与数据库之间的连接,..原创 2020-10-26 17:51:00 · 265 阅读 · 0 评论 -
(Mysql 八)数据表设计的三大范式
设计数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式。常用的有第一范式,第二范式,第三范式,越高的范式数据库冗余越小。基础知识:是不是感觉看不懂:下面介绍一下基础知识1.函数依赖:A-->B,如果通过A属性(属性组)的值,可以唯一确定B属性的值,则称B依赖于A。[属性即数据表的列字段] 如:学号--->姓名,(学号,课程名称)--->分数2.完全函数依赖:A--->B,如果A...原创 2020-10-21 22:29:38 · 618 阅读 · 0 评论 -
springboot+mybatis+mysql整合
(一)创建项目再选择web下的web,SQL下的MySQL,JDBC,MyBatis:刚创建项目时的目录:要操作的数据表(名为texttable)样式:(二)代码完整的项目目录:第一步:首先编写该项目的项目配置文件,是resource文件夹下application.properties(项目创建时自动生成这个文件的),为了语法简便,我们把applica...原创 2018-11-30 22:14:59 · 15964 阅读 · 1 评论 -
MYSQL基本操作常用语句
以下属于MYSQL语句,不与任何计算机语言相关。环境 Linux Ubuntu(库里面有表,表在库里面)/*-----------------------库操作-------------------------*/语句(一):显示所有数据库 show databases;语句(二):创建数据库create database aaa ; // 创建一个名叫 aaa的数据库语句(三):进入一个数据库...原创 2017-01-19 18:36:29 · 1051 阅读 · 0 评论 -
(Mysql一)Linux C语言连接数据库Mysql数据库
1.首先:linux下安装mysql: (Linux版本Ubuntu)1.sudo apt-get install mysql-server2.sudo apt-get install mysql-client3.sudo apt-get install libmysqlclient-dev2.编译:gcc -o test_s原创 2017-01-19 01:33:21 · 789 阅读 · 0 评论 -
(Mysql 二)Linux C语言显示mysql数据库中某个表的数据
我会先帖简单的带注释的代码,再详细解释首先,看一下Linux下Mysql数据库的数据,最后再用程序打印出来从上图我们可以看出,在一个名为 test数据库中,有一个名为 Msg的表..并且表中的内容,也显示了出来。接下来的程序,就是要打印Msg表中的所有数据。#include#include#includeint main(int argc, char con原创 2017-01-20 02:21:19 · 2293 阅读 · 2 评论 -
用电脑远程登陆linux服务器MYSQL数据库
环境:腾讯云Linux ubuntu 服务器装有MYSQL。步骤一:在服务器开启MYSQL服务:命令: sudo service mysql start; 查看mysql状态 命令:sudo mysql status;绿色字显示 MYSQL服务开起来了。步骤二:在服务器修改MYSQL配置文件这个配置文件貌似具体的文件名字并不确定,但是一定是在 /e原创 2017-01-21 17:50:08 · 1280 阅读 · 0 评论 -
MYSQL 用 explain 语句判断select查询是否使用了索引
我有一个 zje 表我先用一个普通的 select语句,用explain解析,看看有什么显示:explain select * from zje;主要关注的是,type 和 key:type = ALL :表示全表扫描type = const :表示通过索引一次就找到了key = NULL:表示没有使用索引key = primary :表示使用了主键ke原创 2017-02-12 20:37:53 · 11907 阅读 · 2 评论 -
(Mysql 四)普通索引(BTREE索引)的使用
在mysql中,普通索引,也就是BTREE索引分两类,一个是单列索引 另一个是多列索引1.索引的作用:当一个数据表只有很少量的数据时,索引体现不了他的价值。但若是一个表有10w多的数据时,查找数据就要全表查找,最差要查找10w个数据,太慢了,若是用索引的话,就会大大减少时间,例如对 score字段做一个索引,索引会生成一个文件,查找数据就到索引文件中查找,由因为索引出来的数据是原创 2017-02-13 02:54:16 · 9063 阅读 · 2 评论 -
C语言简单操作MYSQL数据库的增删查找
下面的代码只是简单的运用MYSQL命令#include#include //所需头文件#include#includeMYSQL *conn_prt; //创造一个MYSQL句柄MYSQL_RES *res;MYSQL_ROW row;/*一些操作的命令起始部分*/char select_head[50] = "select * from ";char原创 2017-01-23 22:39:20 · 12320 阅读 · 0 评论 -
(Mysql 五)触发器的使用
1.触发器的作用2.delimiter的作用 3.触发器的实现4.new 和 old 的使用1.触发器的作用:触发器用于操作一个表的时候同时能够操作另一个表。例如,在A表中,添加一个信息,然后同时自动在B表中添加相同的信息。 当然在A表中,添加数据时,同时自动在B表中删除数据也可以。反正就是只要 发生对A表指定的操作,就会触发设定好的对B表的操作。 这样做,原创 2017-02-13 17:52:21 · 384 阅读 · 0 评论 -
(Mysql 七)InnoDB引擎的行锁和表锁
mysql常用引擎有MYISAM和InnoDB,而InnoDB是mysql默认的引擎。MYISAM不支持行锁,而InnoDB支持行锁和表锁。1.行锁和表锁2.行锁的类型3.行锁的实现1.行锁和表锁在mysql 的 InnoDB引擎支持行锁,与Oracle不同,mysql的行锁是通过索引加载的,即是行锁是加在索引响应的行上的,要是对应的SQL语句没有走索引原创 2017-02-22 00:32:01 · 21387 阅读 · 9 评论 -
MYSQL的创建用户,授权用户,删除用户,查看用户
1.查看用户2.创建用户3.授权用户4.删除用户5.设置与更改用户密码6.撤销用户权限1.查看用户查看用户并没有直接的SQL语句,而是进入 mysql数据库的user表(这个mysql库和user表都是一开始就有的),直接用 select * from user;来查看有什么用户由于在linux下比较难看,因为格式比较乱,所以我用了 SQLyog这个软件登陆原创 2017-02-15 15:51:26 · 78234 阅读 · 3 评论 -
(Mysql 三)mysql的约束
constraint(约束)语句的用法:(选用)如用 constraint 创建设置主键约束:create table aaa( a_id int ,name varchar(18),constraint con_name1 primary key(id)); //创建aaa表,并把 id 设置为主键约束,并且约束名为 con_name //约束名在数据库中是唯一的,如果原创 2017-01-29 02:05:54 · 484 阅读 · 0 评论 -
(Mysql 六)事务
1.存储引擎的使用2.为什么用事务3.事务的特点4.脏读,幻读,可重复读和不可重复读5.隔离级别1.存储引擎的使用:mysql 中,存储引擎使用 InnoDB,对事务有良好的支持2.为什么用事务:事务是应用多多个用户使用数据库的情况的。以银行为例。有用户A要把500块钱转给用户B,那就存在几个步骤:1.检查A的账户是否多于500块钱。2.原创 2017-02-16 15:26:18 · 330 阅读 · 0 评论