![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
一念之间•
活着
展开
-
记录一次单表百万慢SQL优化
这是一个电商项目由于双十一来临,项目订单数据量极具上升。一下子就上升到百万级别的数据了,业务就反映后台订单查询加载很慢。然后我就去慢日志文件了查看果然发现这条SQL执行时间已经上升到了5秒多,我记得当时才几十毫秒。于是我就开始把这条SQL复制出来,开始研究怎么优化。我一般优化的思路(1、检查SQL语法是否有问题(比如用了子查询,或者说大表连小表) 2、是否建立了索引 3、是否索引失效导致全表扫描,4、检查mysql服务磁器盘cpu、5、数据量太大是否需要分库分表)首先看SQL语句原创 2020-11-06 14:53:52 · 1256 阅读 · 0 评论 -
MVCC是什么?
MVCC,Multi-Version Concurrency Control,多版本并发控制数据库有四种隔离级别,通过MVCC在每种查询下的情况也是不一样的。在每次insert 、update 、delete都会生成一个事物id,事物id 是递增的。聚簇索引记录中都包含两个必要字段 trx_id 、roll_pointer ,每次修改都会生成undo日志(insert没有,因为没历史)。这里有几个主要就是概念就是版本链、readview。版本链:对于使用`InnoDB`存储引擎的..原创 2020-10-15 13:38:31 · 279 阅读 · 0 评论 -
MySQL中的事务和视图
一、事务1.什么是事务事务是一组由DML语句组成,这组语句要么全部成功,要么全部失败,是一个整体。2.为什么需要事务3.事务的基本操作开始一个事务 start transaction;创建一个保存点 savepoint 保存点名;回到保存点 rollback to 保存点名;--创建一张学生数学成绩表mysql> create table score(id int ...原创 2020-02-11 14:33:08 · 347 阅读 · 0 评论 -
MySQL中的索引
1.什么是索引用来提高数据库查询速度的东西。比如图书馆的检索系统。类似于一种数据结构2.索引的优缺点优点:提高数据库的性能,查询速度提高(查询海量数据时,没有索引的话查询结果会等很久才显示)缺点:查询速度的提高是以插入、更新、删除的速度为代价的。3.索引的常见种类主键索引(primary key)唯一索引(unique key)普通索引(index)全文索引(fullte...原创 2020-02-11 14:32:14 · 123 阅读 · 0 评论 -
数据库中的内置函数
1.日期函数功能 函数名称显示当前日期 current_date()显示当前时间 current_time()显示当前时间戳 current_timestamp()返回datetime参数的日期部分 date(datetime)在date中添加日期或时间 date_add(date, interval 所添加的日期和时间)在date 中减去日期或...原创 2020-02-11 14:31:18 · 519 阅读 · 0 评论 -
MySQL6_表的增删改查CURD
1.CREATE,数据的插入创建一张学生表mysql> create table student( -> id int primary key comment '学生id', -> name varchar(32) comment '学生姓名', -> age int comment'学生年龄', -> ...原创 2020-02-11 14:30:14 · 152 阅读 · 0 评论 -
MySQL5_数据库中表的约束
1.NULL / NOT NULLNULL(表示默认的),数据库默认字段基本都是字段为空。NOT NULL(表示不为空)--NULL和任意数据进行运算操作,结果为NULL2.default(默认值)比如创建女生班级学生表时所有的学生性别都是女,就可以在创建表时给性别列附上默认值'女';在插入数据时,不用给性别赋值,就使用默认值。mysql> create table ...原创 2020-02-11 14:29:03 · 167 阅读 · 0 评论 -
MySQL4_数据库中表的操作
1.创建表create table 表名( field1 datatype, field2 datatype, field3 datatype)字符集 校验规则 engine 引擎;2.删除表(drop)drop table 表名; --表删除后无法撤销!!!慎重3.修改表(alter)0.添加列alter table 表名 add 增加列名 数据类型 a...原创 2020-02-11 14:28:10 · 116 阅读 · 0 评论 -
MySQL3_数据库的操作语句
1.创建数据库create database 数据库名;(数据库系统默认使用utf-8字符集--可以使用中文)0.查看系统所支持的字符集show charset;1.查看系统支持的字符集校验规则 show collation;2.查看系统默认字符集以及字符校验规则show variable like 'cha...原创 2020-02-11 14:27:31 · 245 阅读 · 0 评论 -
MySQL2_MySQL中的数据类型
MySQL中的数据类型可以分为三类:1.数值类型类型(大写)大小范围(有符号) 范围(无符号)用途tinyint1字节(-128,127)(0,255)小整数型smallint2字节(-32768,32767)(0,65535)大整数型mediumint3字节(-8388608,8388607)(0,1677721...原创 2020-02-11 14:26:48 · 137 阅读 · 0 评论 -
MySQL1_数据库的了解
1.什么是数据库数据库是按照数据结构来组织、存储和管理数据的仓库。2.什么是关系型数据库管理系统(RDBMS)关系型数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。关联数据库管理系统将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。3.关系型数据库管理系统的特点(RDBMS...原创 2020-02-11 14:25:41 · 162 阅读 · 0 评论 -
MySql动态行转列
静态行转列简单一点。动态行转列就需要涉及到存储过程。需要统计每个班下了多少套秋装和冬装,但由于有的学校可能还下了夏装,每个学校下的款式不一样,所以这个列是动态的所以建一个视图如图:需要把这个行转为列如下存储函数BEGINSET @sql = NULL;SET @ssq = NULL;SELECT GROUP_CONCAT(DISTINCT CONCAT...原创 2019-11-20 14:27:29 · 1224 阅读 · 0 评论