![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Mysql
文章平均质量分 83
mysql学习
Dutkig
奔跑吧, 用绝望追不上的速度。
展开
-
Mysql(17)——优化
前言一、SQL和索引优化二、应用优化除了优化SQL和索引,很多时候,在实际生产环境中,由于数据库服务器本身的性能局限,就必须要对上层的应用来进行一些优化,使得上层应用访问数据库的压力能够减到最小。2.1、连接池应用上一般访问数据库,都是先和MySQL Server创建连接,然后发送SQL语句,Server处理完成后,再把结果通过网络返回给应用,然后关闭和MySQL Server的连接,因此短时间大量的数据库访问,消耗的TCP三次握手和四次挥手所花费的时间就很大了,稍微大一点的项目,我们都会在应用原创 2022-03-25 11:07:22 · 1182 阅读 · 0 评论 -
Mysql(16)——日志
一、错误日志错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,可以首先查看此日志。mysqld 使用错误日志名 host_name.err(host_name 为主机名) 并默认在参数 DATADIR(数据目录)指定的目录中写入日志文件。二、查询日志查询日志记录了客户端的所有语句。由于上线项目sql特别多,开启查询日志IO太多导致MySQL效率低,只有在调试时才开启,比如通过原创 2022-03-25 10:43:13 · 987 阅读 · 0 评论 -
Mysql(15)——锁机制 + MVCC(全)
前言事务的隔离级别在之前我们已经学习过,那么事务隔离级别的实现原理是什么呢?锁+MVCC表级锁&行级锁注意:表锁和行锁说的是锁的粒度,不要以为它与下面讲到的其他锁是单独的概念。因为有表级共享锁等概念的存在。表级锁:对整张表加锁。开销小,加锁快,不会出现死锁;锁粒度大,发生锁冲突的概率高,并发度低。行级锁:对某行记录加锁。开销大,加锁慢,会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度高。排它锁&共享锁排它锁(Exclusive),又称为X 锁,写锁。共享锁(Sh原创 2022-03-24 14:28:33 · 1853 阅读 · 0 评论 -
Mysql(14)——事务
概念一个事务是由一条或者多条对数据库操作的SQL语句所组成的一个不可分割的单元。只有当事务中的所有操作都正常执行完了,整个事务才会被提交给数据库;如果有部分事务处理失败,那么事务就要回退到最初的状态,因此,事务要么全部执行成功,要么全部失败。所以记住事务的几个基本概念,如下:事务是一组SQL语句的执行,要么全部成功,要么全部失败,不能出现部分成功,部分失败的结果。保证事务执行的原子操作。事务的所有SQL语句全部执行成功,才能提交(commit)事务,把结果写回磁盘上。事务执行过程中,有的SQL原创 2022-03-22 15:32:07 · 1119 阅读 · 0 评论 -
Mysql(13)——Memory的哈希索引及InnoDB的自适应哈希索引
前言我们知道InnoDB和MyISAM存储引擎支持的都是B+树索引,还有一个memory存储引擎(一个基于内存的存储引擎),他支持哈希索引,那么哈希索引到底是怎么回事呢?这就是我们今天要学习的内容。(了解即可)对于哈希索引(链式哈希表)来说,假设在表中,我们将name设置索引,那么其建立的索引的大致结构如下(简略图):其中我们根据建立索引的列(name)由哈希函数计算出hashkey后再和桶数取模,将name放进对应的桶中,由此我们也就不难看出,hash表中的元素没有任何顺序可言,所以它也就更适原创 2022-03-21 16:22:45 · 712 阅读 · 0 评论 -
Mysql(12)——聚集索引和非聚集索引
MyISAM的索引树相关主键索引树这一部分我们之前在MyISAM的存储结构中也有所提及,我们也知道MyISAM使用B+树作为索引结构,叶节点的data域存放的是数据记录的地址。(因为MyISAM存储引擎的数据和索引是分开存放的,分别是*.MYI和*.MYD),其索引树的data存放的是表中记录的地址,下图是MyISAM主键索引的原理图:辅助索引树在MyISAM中,主索引和辅助索引在结构上没有任何区别, data内存放的依然是数据的地址,都是通过寻址找到响应的数据data(这也是与InnoDB的原创 2022-03-21 15:05:49 · 1011 阅读 · 0 评论 -
Mysql(11)——InnoDb的主键索引树和二级索引树
前言上一节我们学习了B+树的索引底层的相关知识,先来复习一下,再进入今天的内容:假设存在如下的表:注意想想B+索引树的存储结构场景一:uid是主键select * from student;对于上面的sql,在建立了主键索引树后,在底层叶子结点上会进行整表遍历。场景二:uid是主键的等值查询select * from student where uid=5;对于上面的sql,在建立了主键索引树后,会在叶子节点上二分查找到目标结点。场景三:uid是主键的范围查询select *原创 2022-03-21 14:50:19 · 657 阅读 · 0 评论 -
Mysql(10)——B+树索引详解
前言上一篇博客我们讲到了B-树索引,但是其实大家都知道Mysql(MYISAM和InnoDb)最终使用的是B+树索引,那么这么做的原因是什么?这也就是接下来的内容。B-树索引存在的问题问题1:索引+数据内容分散在不同结点上,距离根结点近搜索就快,距离根结点远搜索就慢,也就是花费的磁盘IO的次数不平均,每一行数据搜索花费的时间也不平均;问题2:每一个非叶子结点上不仅仅要存索引(key),还要存储索引值所在的那一行的数据,一个结点(固定大小)所能存放的索引key值的个数比只存储key值的结点的个数原创 2022-03-20 22:33:01 · 850 阅读 · 0 评论 -
Mysql(9)——B-树索引详解
索引的底层实现原理数据库索引是存储在磁盘上的;当数据量大时,就不能把整个索引全部加载到内存了,只能逐一加载每一个磁盘块(对应索引树的节点),索引树越低;越“矮胖”——>磁盘IO次数就少xxx有索引==》 存储引擎==》kernel==》磁盘IO(读索引文件)==》内存上MySQL支持两种索引:B-树索引哈希索引大家知道,B-树和哈希表在数据查询时的效率是非常高的。这里我们主要讨论一下MySQL InnoDB存储引擎,基于B-树(但实际上MySQL采用的是B+树结构)的索引结构原创 2022-03-20 21:52:20 · 955 阅读 · 1 评论 -
Mysql(8)——索引初步及explain
Mysql索引当表中的数据量到达几十万甚至上百万的时候,SQL查询所花费的时间会很长,导致业务超时出错,此时就需要用索引来加速SQL查询。由于索引也是需要存储成索引文件的,因此对索引的使用也会涉及磁盘I/O操作。如果索引创建过多,使用不当,会造成SQL查询时,进行大量无用的磁盘I/O操作,降低了SQL的查询效率,适得其反,因此掌握良好的索引创建原则非常重要!索引分类索引是创建在表上的,是对数据库表中一列或者多列的值进行排序的一种结果。索引的核心是提高查询的速度!索引的优点: 提高查询效率索引的缺原创 2022-03-20 20:32:30 · 709 阅读 · 0 评论 -
MySql(7)—— 约束、存储引擎
约束(非常重要)什么是约束? constraint在创建表的时候,我们可以给表中的字段加上一些约束,来保证这个表中数据的完整性、有效性!!!约束的作用:保证表中的数据有效约束的种类非空约束:not null唯一性约束: unique主键约束: primary key (简称PK)外键约束:foreign key(简称FK)检查约束:check(mysql不支持,oracle支持)我们这里重点学习前四个约束。非空约束:not null非空约束not null约束原创 2022-02-27 10:39:42 · 237 阅读 · 0 评论 -
MySql(6)——表操作(建表,删表,插入,修改,删除)及数据类型
表的创建建表的语法格式:(建表属于DDL语句,DDL包括:create drop alter)create table 表名(字段名1 数据类型, 字段名2 数据类型, 字段名3 数据类型);create table 表名( 字段名1 数据类型, 字段名2 数据类型, 字段名3 数据类型);表名:建议以t_ 或者 tbl_开始,可读性强。见名知意。 字段名:见名知意,表名和字段名都属于标识符。mysql中的数据类型很多数据类型,我们只需要掌握一些常见的数据类型即可。va原创 2022-02-27 10:39:24 · 574 阅读 · 0 评论 -
MySql(5)—— union、limit
union合并查询结果集案例:查询工作岗位是MANAGER和SALESMAN的员工?select ename,job from emp where job = 'MANAGER' or job = 'SALESMAN';select ename,job from emp where job in('MANAGER','SALESMAN');+--------+----------+| ename | job |+--------+----------+| ALLEN | SAL原创 2022-02-27 10:39:04 · 982 阅读 · 0 评论 -
MySql(4)——distinct关键字、连接查询、子查询
distinct作用:把查询结果去除重复记录注意:原表数据不会被修改,只是查询结果去重。mysql> select distinct job from emp;+-----------+| job |+-----------+| CLERK || SALESMAN || MANAGER || ANALYST || PRESIDENT |+-----------+注意:distinct只能出现在所有字段的最前方。mysql> select原创 2022-02-27 10:38:50 · 1547 阅读 · 0 评论 -
MySql(3)——模糊查询、排序、数据处理函数、分组函数
模糊查询使用like 称为模糊查询,也是条件查询的一种,支持%或下划线匹配:(%是一个特殊的符号,_ 也是一个特殊符号)% :匹配任意多个字符_:任意一个字符。例如:找出名字中含有O的?mysql> select ename from emp where ename like '%O%'; +-------+ | ename | +-------+ | JONES | | SCOTT | | FORD | +-------+找出名字以T结尾的?select原创 2022-02-17 01:06:51 · 1077 阅读 · 0 评论 -
MySql(2)——简单查询、条件查询
简单查询我们所使用的的数据库文件仍然是上一节使用的test.sql SQL语句不区分大小写,也可混用,但注意要以半角分号;结尾,下面我们开始简单查询:查询一个字段select 字段名 from 表名;注意:select和from都是关键字,字段名和表名都是标识符。例如:查询部门名称 mysql> select dname from dept; +------------+ | dname | +------------+ | ACCOUNTING | | RESE原创 2022-02-13 22:34:01 · 1002 阅读 · 0 评论 -
Mysql(1)——相关概念、SQL的分类、简单操作
一、数据库?数据库管理系统?SQL?关系是什么?数据库: 英文单词DataBase,简称DB。按照一定格式存储数据的一些文件的组合。顾名思义:存储数据的仓库,实际上就是一堆文件。这些文件中存储了 具有特定格式的数据。数据库管理系统: DataBaseManagement,简称DBMS。数据库管理系统是专门用来管理数据库中数据的,数据库管理系统可以 对数据库当中的数据进行增删改查。常见的数据库管理系统: MySQL、Oracle、MS SqlServer、DB2、s原创 2022-02-13 22:33:44 · 464 阅读 · 0 评论