mysql
文章平均质量分 90
be.be
少年,充满激情,勇敢的大步向前,享受生活的得失,直面璀璨的岁月
展开
-
MySQL分库分表会带来哪些问题?分库分表问题
MySQL分库分表会带来哪些问题?分库分表能有效的环节单机和单库带来的性能瓶颈和压力,突破网络IO、硬件资源、连接数的瓶颈,同时也带来了一些问题。下面将描述这些技术挑战以及对应的解决思路。分库分表能有效的环节单机和单库带来的性能瓶颈和压力,突破网络IO、硬件资源、连接数的瓶颈,同时也带来了一些问题。下面将描述这些技术挑战以及对应的解决思路。1、事务一致性问题分布式事务当更新内容同时分布在不同库中,不可避免会带来跨库事务问题。跨分片事务也是分布式事务,没有简单的方案,一般可使用"XA协议"和"两阶段转载 2021-04-03 19:28:44 · 1608 阅读 · 0 评论 -
Mysql group by
mysql group by底层原理 参考地址:https://www.cnblogs.com/bonelee/p/6359250.html 参考地址:https://blog.csdn.net/xtdhqdhq/article/details/18408905 由于GROUP BY 实际上也同样会进行排序操作,而且与ORDER BY 相比,GROUP BY 主要只是多了排序之后的分组操作。当然,如果在分组的时候还使用了其他的一些聚合函数,那么还需要一些聚合函数的计算。所以,...转载 2020-05-10 22:13:16 · 362 阅读 · 0 评论 -
Mysql order by与limit混用陷阱
Mysql order by与limit混用陷阱在Mysql中我们常常用order by来进行排序,使用limit来进行分页,当需要先排序后分页时我们往往使用类似的写法select * from 表名 order by 排序字段 limt M,N。但是这种写法却隐藏着较深的使用陷阱。在排序字段有数据重复的情况下,会很容易出现排序结果与预期不一致的问题。比如现在有一张user表,表结构及数据如下:表结构表数据现在想根据创建时间升序查询user表,并且分页查询,每页2条,那很容易写出sq.转载 2020-05-10 21:32:16 · 154 阅读 · 0 评论 -
Mysql join原理
MySQL JOIN原理先看一下实验的两张表:表comments,总行数28856表comments_for,总行数57,comments_id是有索引的,ID列为主键。以上两张表是我们测试的基础,然后看一下索引,comments_for这个表comments_id是有索引的,ID为主键。最近被公司某一开发问道JOIN了MySQL JOIN的问题,细数之下发下我对MySQL JOIN的理解并不是很深刻,所以也查看了很多文档,最后在InsideMySQL公众号看到了两篇关于JOIN转载 2020-05-10 20:38:27 · 158 阅读 · 0 评论 -
Mysql 分页语句 Limit原理
Mysql 分页语句 Limit原理(1)、Mysql的limit用法在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能。 SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定...转载 2020-05-10 20:29:20 · 1368 阅读 · 0 评论 -
mysql -存储过程
MySQL 存储过程分类 编程技术MySQL 5.0 版本开始支持存储过程。存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。优点存储过程可封装,并隐藏复杂的商业逻辑。 存储过程可以回传值,并可以接受参数。 存储过程无.转载 2020-05-10 18:06:44 · 225 阅读 · 0 评论 -
分析存储过程的使用场景及其优缺点
分析存储过程的使用场景及其优缺点分析存储过程的使用场景 当 一个事务涉及到多个SQL语句时或者涉及到对多个表的操作时就要考虑用存储过程;当在一个事务的完成需要很复杂的商业逻辑时(比如,对多个数据的操作,对 多个状态的判断更改等)要考虑;还有就是比较复杂的统计和汇总也要考虑,但是过多的使用存储过程会降低系统的移植性。为了系统的控制方便,例如当系统进行调整时,这是只需要将后台存储过程进行更改,而不需要更改客户端程序。也无需重新安装客户端应用程序。存储过程不仅仅适用于大型项目,对于中小型项...转载 2020-05-10 16:59:31 · 1155 阅读 · 0 评论 -
Mysql-触发器及创建触发器失败原因
Q:什么是触发器?A: 触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的特性: 1、有begin end体,begin end;之间的语句可以写的简单或者复杂 2、什么条件会触发:I、D、U 3、什么时候触发:在增删改前或者后 4、触发频率:针对每一行执行 5、触发器定义在表上,附着在表上。也就是由事件来触发某个操作,事件包括INSERT语句,UPDATE语句和DELETE语句;可以协助应用在数据库端确保数据的完整转载 2020-05-10 16:25:56 · 5000 阅读 · 0 评论 -
mysql 视图,视图更新删除
1、创建视图2、查看视图3、视图的更改 1、create or replace view 2、alter 3、DML 4、drop4、使用with check option约束 嵌套视图5、定义视图时的其他选项:algorithm、definer、SQL security视图权限6、视图查询语句的处理 1、替代方法 2、具体化方法Q:什么是视图?视图是干什么用的?A: 视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包.转载 2020-05-10 15:23:14 · 1106 阅读 · 0 评论 -
mysql 默认事务隔离级别下锁分析
MySQL在默认事务下各SQL语句使用的锁分析数据库使用锁是为了支持更好的并发,提供数据的完整性和一致性。InnoDB是一个支持行锁的存储引擎,锁的类型有:共享锁(S)、排他锁(X)、意向共享(IS)、意向排他(IX)。为了提供更好的并发,InnoDB提供了非锁定读:不需要等待访问行上的锁释放,读取行的一个快照。该方法是通过InnoDB的一个特性:MVCC来实现的InnoDB有三种行锁...转载 2020-05-03 15:56:14 · 232 阅读 · 0 评论 -
mysql安全模式: sql_safe_updates
MYSQL的安全模式:sql_safe_updates介绍什么是安全模式在mysql中,如果在update和delete没有加上where条件,数据将会全部修改。不只是初识mysql的开发者会遇到这个问题,工作有一定经验的工程师难免也会忘记写入where条件。为了避免失误造成的数据全部修改和删除,可开启mysql的安全模式。安全模式的开启与关闭连接到数据库后,查看当前mysq...转载 2020-05-02 16:19:20 · 429 阅读 · 0 评论 -
mysql 常见问题
事务四大特性原子性:不可分割的操作单元,事务中所有操作,要么全部成功;要么撤回到执行事务之前的状态 一致性:如果在执行事务之前数据库是一致的,那么在执行事务之后数据库也还是一致的; 隔离性:事务操作之间彼此独立和透明互不影响。事务独立运行。这通常使用锁来实现。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。 持久性:事务一旦提交,其结果就...原创 2020-04-26 10:35:20 · 80 阅读 · 0 评论 -
Mysql-事务阻塞
阻塞因为不同锁之间的兼容性关系,在有些时刻一个事务中的锁需要等待另一个事务中的锁释放它所占用的资源,这就是阻塞。阻塞并不是一件坏事,其是为了确保事务可以并发且正常地运行。在InnoDB存储引擎中,参数innodb_lock_wait_timeout用来控制等待的时间(默认是50秒),innodb_rollback_on_timeout用来设定是否在等待超时时对进行中的事务进行回滚操作(默认是OFF...原创 2020-04-01 23:46:24 · 1112 阅读 · 0 评论 -
Mysql-死锁
如果程序是串行的,那么不可能发生死锁。死锁只存在于并发的情况,而数据库本身就是一个并发运行的程序,因此可能会发生死锁。即A等待B,B在等待A,这种死锁问题被称为AB-BA死锁,对于大部分的死锁,MYSQL innodb会自动检测到并回滚...原创 2020-04-01 23:44:50 · 98 阅读 · 0 评论 -
Mysql-丢失更新
丢失更新是另一个锁导致的问题,简单来说其就是一个事务的更新操作会被另一个事务的更新操作所覆盖,从而导致数据的不一致。例如:1)事务T1将行记录r更新为v1,但是事务T1并未提交。2)与此同时,事务T2将行记录r更新为v2,事务T2未提交。3)事务T1提交。4)事务T2提交。但是,在当前数据库的任何隔离级别下,都不会导致数据库理论意义上的丢失更新问题。这是因为,即使是RE...原创 2020-04-01 23:41:50 · 1171 阅读 · 4 评论 -
Mysql 脏页 脏读 脏数据
脏读:读到事务未提交的数据称为脏读,违反事务隔离级别脏数据:mysql内存页内已发生修改还没有同步到磁盘上的数据,由于mysql是异步按一定频率刷新到磁盘故存在此情况,属于正常...原创 2020-04-01 23:38:29 · 827 阅读 · 0 评论 -
MYSQL 幻读(Phantom Problem)不可重复读
Phantom Problem(幻读)/不可重复读:是指在一个事务内多次读取同一数据集合。在这个事务还没有结束时,另外一个事务也访问该同一数据集合,并做了一些DML操作。因此,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的情况产生原因 :在事务的多次读写其间,发生成有其他事务提交了添加或修改操作...原创 2020-04-01 23:29:40 · 397 阅读 · 0 评论 -
Mysql INNODB引擎行锁的3种算法 Record Lock Next-Key Lock Grap Lock
Mysql INNODB引擎行锁的3种算法InnoDB存储引擎有3种行锁的算法,其分别是:□ Record Lock:单个行记录上的锁,Record Lock总是会去锁住索引记录,如果InnoDB存储引擎表在建立的时候没有设置任何一个索引,那么这时InnoDB存储引擎会使用隐式的主键来进行锁定□ Gap Lock:间隙锁,锁定一个范围,但不包含记录本身□ Next-Key Lock...原创 2020-04-01 23:17:32 · 395 阅读 · 0 评论 -
mYSQL 外键约束
MySQL中外键的定义、作用、添加和删除1 简介在实际开发的项目中,一个健壮数据库中的数据一定有很好的参照完整性。例如学生档案和成绩单两张表,如果成绩单中有张三的成绩,学生档案中张三的档案却被删除了,这样就会产生垃圾数据或者错误数据。为了保证数据的完整性,将两张表之间的数据建立关系,因此就需要在成绩表中添加外键约束。2 外键的定义外键是指引用另外一个表中的一列或多列数据,被引用的列...转载 2020-04-01 22:55:02 · 291 阅读 · 0 评论 -
千万大表,超100G大表修改表结构在线更改MYSQL表结构 pt-online-schema-change
在线更改MYSQL表结构 pt-online-schema-change表引擎:Innodb一、pt-online-schema-change介绍 percona 公司提供的一款在线更新表的工具,更新过程不会锁表,也就是说操作alter的过程不会阻塞写和读取。即使如此,建议大家操作前还是先做好表备份。(备份工具推荐mydumper,这里不细说)参数...原创 2019-11-29 14:15:33 · 634 阅读 · 0 评论 -
YUM 安装Percona MySQL 报错
YUM 安装Percona MySQL 报错本文链接:https://blog.csdn.net/xinjing2015/article/details/88178789yum 安装Percona MySQL时,提示错误:The GPG keys listed for the "Percona-Release YUM repository - x86_64" repositor...转载 2019-11-28 17:16:07 · 207 阅读 · 0 评论 -
安装percona-xtrabackup一直提示依赖冲突
安装percona-xtrabackup一直提示依赖冲突的一个解决办法我的Mysql是5.6版本,通过自己下载的rpm包执行安装:yum instal percona-xtrabackup-2.1.7-721.rhel6.x86_64.rpm会出现如下的安装错误提示:[root@host2 MySQL]# yum install percona-xtrabackup-2.1....原创 2019-11-28 17:14:21 · 1271 阅读 · 0 评论 -
mysql截取sql语句
substring_index(spu,substring_index(spu,'-',-1),1),substring_index(spu,substring_index(cn_spu,'-',-1),1)原创 2019-02-16 14:45:07 · 470 阅读 · 0 评论 -
MySQL 字符串截取函数,字段截取,字符串截取
MySQL 字符串截取函数:left(), right(), substring(), substring_index()。还有 mid(), substr()。其中,mid(), substr() 等价于 substring() 函数,substring() 的功能非常强大和灵活。 1. 字符串截取:left(str, length) mysql> select left('sq...转载 2019-02-16 13:49:59 · 12109 阅读 · 1 评论 -
mysql授权用户,创建用户名密码,授权单个数据库,授权多个数据库
1.Mysql授权用户 a) 授权全部权限,并制定可以访问的ip地址,用户名、密码 i. Grant all privilegs on *.* to ‘用户名’@‘ip地址’ identified by ‘密码’ b) 授权数据库test库全部表权限、数据表 i. Grant all privilegs on test.* to ‘用户名’@‘ip地址’ i...原创 2018-05-04 10:03:23 · 6520 阅读 · 0 评论