mysql
mysql操作
@司马懿
越努力越公平!
展开
-
MySQL 函数总结
这里写自定义目录标题1.DATE_SUB() 函数1.DATE_SUB() 函数定义: DATE_SUB() 函数从日期减去指定的时间间隔。语法: DATE_SUB(date,INTERVAL expr type)date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。type 参数可以是下列值:https://www.w3school.com.cn/sql/fun...原创 2020-05-06 19:10:57 · 162 阅读 · 0 评论 -
(十)为什么sql会抖动?
问题思考: 一条SQL语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间还很短。 好像就是数据库抖动了一下!为什么? 分析:InnoDB在处理更新语句的时候,只做了写日志这一个磁盘操作。这个日志 叫作redo log(重做日志),也就是《孔乙己》里咸亨酒店掌柜用来记账的粉板,在更新内...原创 2019-11-08 18:08:15 · 513 阅读 · 0 评论 -
(九)给字符加索引
场景:验证邮箱mysql> create table SUser( ID bigint unsigned primary key, email varchar(64), ... )engine=innodb;mysql> select f1, f2 from SUser where email='xxx';...原创 2019-11-07 17:53:35 · 202 阅读 · 0 评论 -
(八)普通索引和唯一索引,应该怎么选择?
如果业务能保证唯一性的情况下,还是选择普通索引性能更好select id from T where k=5首先,我们看下查询过程对于普通索引来说,查询到满足条件的第一个记录后,需要查找下一个记录,直到碰到第一个不满足k=5条件的记录对于唯一索引来说,由于索引上有唯一性,查询到第一个满足条件的记录后就停止检索了所以在这里的区别就是普通索引会多查那么一下,那么这两种的性能差别有多...原创 2019-11-04 15:48:43 · 249 阅读 · 0 评论 -
(七)事务到底是隔离的还是不隔离的?
问题:观点一:事务T要启动视图,read-view,之后事务T执行期间,即使有其他事务修改了数据,事务T看到的仍然跟在启动时看到的一样,也就是说,一个重复读隔离级别执行下的事务,好像与世无争,不受外界影响。观点二:但是面对行锁时:,一个事务要更新一行,如果刚好有另外一个事务拥有这一行的行锁,它又不能这么超然了,会被锁住,进入等待状态。问题是,既然进入了等待状态,那么等到这个事务自己获取到行...原创 2019-11-01 18:23:58 · 250 阅读 · 0 评论 -
(六)行锁功过:怎么减少行锁对性能的影响?
MySQL的行锁是在引擎层由各个引擎自己实现的。但并不是所有的引擎都支持行锁,比如MyISAM引擎就不支持行锁。不支持行锁意味着并发控制只能使用表锁,对于这种引擎的表,同一张表上任何时刻只能有一个更新在执行,这就会影响到业务并发度。InnoDB是支持行锁的,这也是MyISAM被InnoDB替代的重要原因之一。看图:在操作同一张数据库表时,事务A commit 之前,事务B必须等待着事...原创 2019-10-31 17:38:54 · 294 阅读 · 0 评论 -
(五)全局锁、表锁和行锁
所有的锁的初衷:数据库处理并发问题全局锁:当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。典型使用场景:做全库逻辑备份;可以看到,这个备份结果里,用户A的数据状态是“账户余额没扣,但是用户课程表里面已经多了一门课”。如果后面用这个备份来恢复数据的话,用...原创 2019-10-30 18:05:53 · 455 阅读 · 0 评论 -
(四)深入浅出索引-(索引原则)
select *fromTwhere k between 3 and 5执行此条sql语句需要执行几次树的操作?会扫描多少行?以下时上句sql中的建表语句:mysql> create table T (ID int primary key,k int NOT NULL DEFAULT 0,s varchar(16) NOT NULL DEFAULT '',index k(...原创 2019-10-29 19:02:09 · 189 阅读 · 0 评论 -
(三)深入浅出索引-(索引存储数据结构)
常见的索引模型: 比较常见、也比较简单的数据结构:它们分别是哈希表、有序数组、和搜索树。哈希表 是一种以键-值存储的数据结构,我们只要输入待查找的值就是key,就可以找到其对应的值即value,哈希的思路很简单,用一个函数把key换算成一个确定的位置,然后把value放在这个位置上。当然不可避免的多个key值,经过哈希函数的计算,会出现同一个值的情况,处...原创 2019-10-28 18:47:18 · 1191 阅读 · 1 评论 -
(二)为什么这些sql语句逻辑相同,性能却差异巨大?
1.条件字段函数操作现在已经记录了从2016年初到2018年底的所有数据,运营部门有一个需求是,要统计发生在所有年份中7月份的交易记录总数。这个逻辑看上去并不复杂,你的SQL语句可能会这么写:mysql> select count(*) from tradelog where month(t_modified)=7;根据上图的索引规则显示,这条sql查询会降低性能,因为...原创 2019-10-28 18:21:01 · 192 阅读 · 0 评论 -
(一)一条sql查询语句是如何执行的?
1.连接器如下图所示:如上图所示:mysql分为两层,service和存储引擎,详细见图。 service现在就不先讲了,我们先简单说一说创建sql语句时,我们的使用的默认引擎:InnoDB。当然我们可以指定存储引擎:比如在create table语句中使用 engine=memory。接下来我们继续撸一撸连接: 用户就是如果太长时间没有动静,连接器就...原创 2019-10-25 18:40:21 · 146 阅读 · 0 评论 -
查询男女的各前三名的sql语句
select * from (select * from student s where s.sex='男' order by s.score desc) where rownum<=3unionselect * from (select * from student s where s.sex='女' order by s.sc...原创 2019-01-10 18:27:05 · 3093 阅读 · 0 评论 -
对于项目中的组合表的反思!
今天面试一家XXX公司:人家问我对组合表的看法,当时我因为项目中用过这个组合表,所以我大力推崇这个组合表,理由如下,首先这个表减少多个表 之间的关联查询,减少了数据库中的高并发时的压力,提高了速度性能。面试官回:1.这种表不好看,看起来太麻烦 2.这种表小型数据量 的情况下 还行,但是在大量数据的情况下,容易造成庞大的数据冗余。 ...原创 2019-01-04 21:35:56 · 140 阅读 · 0 评论 -
mysql索引原理
一、介绍1.什么是索引?一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中我们遇到最多的,也是最容易出问题的,还是一些 复杂的查询的操作,因此对查询语句优化显然是重中之重。说起加速查询,就不得不提到索引了。2.为什么要有索引呢?索引在mysql中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构。索引对于良好的性能:非常关...原创 2019-01-04 20:33:02 · 141 阅读 · 0 评论 -
mysql与oracle的区别?
关于mysql与oracle区别,先看着一下这三种,不谈mysql与oracle在操作中区别原创 2018-12-16 17:10:27 · 700 阅读 · 0 评论 -
3.多表查询和事务
原创 2018-09-01 16:45:43 · 150 阅读 · 0 评论 -
2.查询与约束
原创 2018-09-01 16:36:45 · 111 阅读 · 0 评论 -
1.MYSQL基础语法
web02 数据库1 数据库介绍1.1 什么是数据库按照特殊格式存储数据的仓库,方便我们存取操作1.2 数据库管理系统DBMS应用软件---mysql 操作仓库(数据库)、表、记录1.3 实体(类)和表关系一个实体对应一张表一个对象对应一条记录1.4 常见数据库java语言中:mysql、oracle、DB22 数据库安装和使用2.1 安...原创 2018-08-23 17:00:29 · 156 阅读 · 0 评论 -
SQL 优化!
1. 查询优化 a:慢查询 所谓的慢查询就是 :开启日志,我们指定一个标准时间,然后执行sql语句,如果哪一条sql语句超过这个标准时间,它就会被监测出来,写入日志。开发人员据此加以修改并且优化。 b:查询计划 就是explan+sql语句,并且可以在此基础上加一些Type等等关键字,可以提供给我们更加详细的信息。当然在sqlyog软件 中也...原创 2018-12-16 16:59:37 · 132 阅读 · 0 评论 -
SQL语句罗列
-- 创建表CREATE TABLE student3 ( id INT, NAME VARCHAR(20), age INT, sex VARCHAR(5), address VARCHAR(100), math INT, english INT);-- 插入记录INSERT INTO student3(id,NAME,age,sex,address,math...原创 2018-12-22 19:20:11 · 339 阅读 · 0 评论