
MySql
文章平均质量分 72
说的就是你吧
脚踏实地 逐步执行下一个三年计划
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MySQL-普通索引和唯一索引
这两种索引对查询语句和更新语句的性能影响。查询过程假设,执行查询的语句是 select id from T where k=5。这个查询语句在索引树上查找的过程,先是通过B+树从树根开始,按层搜索到叶子节点,然后可以认为数据页内部通过二分法来定位记录。对于普通索引来说,查找到满足条件的第一个记录(5,500)后,需要查找下一个记录,直到碰到第一个不满足k=5条件的记录。对于唯一索引来说,由于索引定义了唯一性,查找到第一个满足条件的记录后,就会停止继续检索。那么,这个不同带来的性能差距会有多少呢转载 2021-02-15 15:02:15 · 306 阅读 · 0 评论 -
MySQL-事务隔离
事务隔离级别如果是可重复读隔离级别,事务T启动的时候会创建一个视图read-view,之后事务T执行期间,即使有其他事务修改了数据,事务T看到的仍然跟在启动时看到的一样。也就是说,一个在可重复读隔离级别下执行的事务,好像与世无争,不受外界影响。但是,一个事务要更新一行,如果刚好有另外一个事务拥有这一行的行锁,它又不能这么超然了,会被锁住,进入等待状态。问题是,既然进入了等待状态,那么等到这个事务自己获取到行锁要更新数据的时候,它读到的值又是什么呢?我给你举一个例子吧。下面是一个只有两行的表的初始化语句转载 2021-02-14 18:57:04 · 292 阅读 · 0 评论 -
MySQL-关于对联合主键索引和InnoDB索引组织表的理解
CREATE TABLE `geek` ( `a` int(11) NOT NULL, `b` int(11) NOT NULL, `c` int(11) NOT NULL, `d` int(11) NOT NULL, PRIMARY KEY (`a`,`b`), KEY `c` (`c`), KEY `ca` (`c`,`a`), KEY `cb` (`c`,`b`)) ENGINE=InnoDB;select * from geek where c=N order转载 2021-02-14 16:00:43 · 650 阅读 · 0 评论 -
MySQL-索引
在下面这个表T中,如果我执行 select * from T where k between 3 and 5,需要执行几次树的搜索操作,会扫描多少行?下面是这个表的初始化语句。mysql> create table T (ID int primary key,k int NOT NULL DEFAULT 0, s varchar(16) NOT NULL DEFAULT '',index k(k))engine=InnoDB;insert into T values(100,1, '转载 2021-02-14 15:16:50 · 246 阅读 · 0 评论 -
MySQL-如何避免长事务对业务的影响?
首先,从应用开发端来看:确认是否使用了set autocommit=0。这个确认工作可以在测试环境中开展,把MySQL的general_log开起来,然后随便跑一个业务逻辑,通过general_log的日志来确认。一般框架如果会设置这个值,也就会提供参数来控制行为,你的目标就是把它改成1。确认是否有不必要的只读事务。有些框架会习惯不管什么语句先用begin/commit框起来。我见过有些是业务并没有这个需要,但是也把好几个select语句放到了事务中。这种只读事务可以去掉。业务连接数据库的时候,根据转载 2021-02-14 14:56:55 · 318 阅读 · 0 评论 -
MySQL中的redo log和binlog
前言年前的一次操作数据库的时候,更新数据时候少加了条件,导致其他项目的数据库连接信息被更新错了,然后找DBA要了更新操作的binlog日志,重点是后面的来了,恢复数据需要手动根据binlog日志来自己组织数据,再更新回来。当时我就觉得这不应该吧,我这几十条数据的还行,如果更新了几万条数据,难道要手动组织几万次???后来问了一个朋友,说是有个binlog2sql的工具可以使用,然后我在虚拟机上整了下,没整成功,先不管了。(以下内容来自MySQL实战45讲)一、重要的日志模块:redo log在MySQ转载 2021-02-14 11:34:09 · 259 阅读 · 0 评论 -
MySQL的查询优化——背后原理
转载地址:https://www.jianshu.com/p/d7665192aaaf说起MySQL的查询优化,相信大家积累一堆技巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型….. 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,...转载 2019-04-17 14:52:37 · 411 阅读 · 0 评论 -
一份非常完整的 MySQL 规范
转载地址:https://mp.weixin.qq.com/s/IG_4XQwCzR0nJoqpZ7N25Q一、数据库命令规范·所有数据库对象名称必须使用小写字母并用下划线分割·所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)·数据库对象的命名要能做到见名识意,并且最后不要超过32个字符·临时库表必须以tmp_为前缀并...转载 2019-03-11 16:54:35 · 123 阅读 · 0 评论 -
Mysql区分大小写问题
项目基础数据修改代码后测试,测试的时候不小心全输成了大写字母,结果还能查到数据,试了别的数据,发现是区分大小写的,于是对比了两个表的建表信息,发现了不同。区分大小写的:不区分大小写的:关键就出在COLLATE的设置上。 (先说一下大小写的问题,在介绍COLLATE的具体用法)要想需要mysql(某个表)区分大小写,有以下几种方法:方法一:修改MySql Server...转载 2018-12-24 11:34:34 · 33925 阅读 · 2 评论 -
Mysql INSERT加入WHERE条件
案列:项目中一个基础数据,在新增的时候,已经判断过唯一的字段内容不能重复了,但是在云环境上,测试出了bug,新增时产生了两条一模一样的数据,我在本地测试时也重现了问题,快速点击新增两下,会有bug出现。代码如下:解决方法一:加锁,很自然的选择了加锁,又不要改sql,easy的很,然而刚开始把锁加到serviceImpl里面了,导致任何锁都没有效果,锁是执行了,但是事务没有commit,第二...原创 2018-12-07 13:28:07 · 38859 阅读 · 9 评论 -
MySql添加联合唯一索引
项目需要将某个表的某两个字段添加唯一索引,保证这两个字段的值不能同时重复。Alter table 表名 add UNIQUE index 索引名 (字段1,字段2)当表中已经存在重复数据的时候,添加的时候就会报错,这时候需要将数据去重。1.先查出来重复的数据SELECT * FROM (SELECT 字段,COUNT(1) AS num FROM 表 GROUP BY 字段) t...原创 2018-12-12 19:42:21 · 6022 阅读 · 0 评论 -
Mysql8连接信息变动
昨天公司DBA把测试库的MySQL从5.7升到了8.1,然后今天一上午项目都启动不了,要修改的地方不多,但是涉及的影响很大,一直到下午才搞定。在此记录下。首先贴出来正确的连接信息:jdbc:mysql://localhost:3306/db?useSSL=false&serverTimezone=UTCMySQL的JDBC驱动使用了新的包名,所以我们需要将driver的值改为...原创 2018-09-14 17:23:56 · 618 阅读 · 0 评论 -
MySql RowNum实现查询插入自增列
网上查的,亲测可用,如有雷同,请联系我。SELECT @rownum := @rownum + 1 AS item, 表名.字段1,字段2,字段3(需要查询的 字段)From (SELECT @rownum:= 0) r, 表名;后可加left/right join 等连接查询。...原创 2018-07-22 08:28:44 · 865 阅读 · 0 评论