
Mysql
AAA821
这个作者很懒,什么都没留下…
展开
-
Waiting for table flush及Waiting for table metadata lock重现及解决
背景:线上的从库突然查询非常慢,一直在等待,查不出来。看执行线程列表有大量的Waiting for table flush猜测原因: 1.运维使用alter在主库上进行大表数据的切表 2.大数据部门在从库通过datax同步数据到数据仓库。早上报Waiting for table flush,有可能是主库先rename成功,然后主库切表成,主从同步到从库的时候,因为从库有慢查询,所以从库报Waiting for table flush重现步骤: 1.先用一个线程查表然后长...原创 2021-11-16 17:17:29 · 2451 阅读 · 0 评论 -
雪花算法
雪花算法生成的ID可用于做分布式系统ID生成的ID格式 1位标识符(始终是0)+41位时间戳 + 10位机器标识符 +12位序列41位时间=当前时间截 - 开始时间截,这里的的开始时间截,是我们的id生成器开始使用的时间,由程序指定的机器标识符就是分布式系统中每台机的标识ID优点:64位二进制转成十进制是19位长度短且根据算法生成,可以反推缺点:因为算法中有时间戳,所以如果机器时钟回拨,有可能ID重复反推:我可以在10位机器标识符那里,用5位做机房ID,5位做机器ID比如说生..原创 2020-10-19 10:59:12 · 408 阅读 · 0 评论 -
Mysql 事务会锁数据 其他事务会Lock wait timeout
因为我是手动开启开务,没用Transactional注解,做了试验 当开启A事务后 中途发生异常,然后在Catch里不调用事务回滚方法,也就是A事务不提交 也不回滚使用以下语句查询SELECT trx_id,trx_state,trx_started,trx_tables_locked,trx_rows_locked FROM INFORMATION_SCHEMA.INNODB_TRX;结果 没有锁表 只锁了一行数据用这个命令会看到A事务一直在运行中 因为我这个事务操作的是用户的钱包..原创 2020-05-30 16:20:54 · 275 阅读 · 0 评论 -
顺序IO跟随时IO
转载自https://blog.youkuaiyun.com/fly_rice/article/details/89398157对于从磁盘中读取数据的操作,叫做IO操作,这里有两种情况:第一种:假设我们所需要的数据是随机分散在磁盘的不同页的不同扇区中的,那么找到相应的数据需要等到磁臂(寻址作用)旋转到指定的页,然后盘片寻找到对应的扇区,才能找到我们所需要的一块数据,一次进行此过程直到找完所有数据,这...转载 2020-03-13 18:20:25 · 240 阅读 · 0 评论 -
(转)B+树的理解
大部分内容转自这篇博文https://www.jianshu.com/p/e5d86a0ba150和https://www.cnblogs.com/xueqiuqiu/articles/8779029.htmlB树就是B-树。Mysql用的是B+树B树和B+树应用在数据库索引,可以认为是m叉的多路平衡查找树,但是从理论上讲,二叉树查找速度和比较次数都是最小的,为什么不用二叉树呢?因...转载 2019-12-25 16:04:13 · 349 阅读 · 0 评论 -
(转)MYSQL order by排序与索引关系总结
转自:http://phpdo.com/post/2013-02-26/40049082902这里主要讨论一下InnoDB B-Tree索引的使用,不提设计,只管使用。B-Tree索引主要作用于WHERE和ORDER BY子句。这里讨论的均在MySQL-Server-5.1.42测试CREATE TABLE `friends`( `ID` INT(10)UNSIGNED NOT NUL...转载 2019-01-13 22:58:08 · 361 阅读 · 0 评论 -
Sql语句中IN和exists的区别及应用`
转自:https://www.cnblogs.com/liyasong/p/sql_in_exists.html表展示 首先,查询中涉及到的两个表,一个user和一个order表,具体表的内容如下:user表:order表:in 确定给定的值是否与子查询或列表中的值相匹配。in在查询的时候,首先查询子查询的表,然后将内表和外表做一个笛卡尔积,然后按照条件...转载 2019-01-28 16:21:47 · 264 阅读 · 0 评论 -
MySQL中InnoDB的一级索引、二级索引 即聚簇索引 密集索引和稀疏索引
转自https://blog.youkuaiyun.com/roxliu/article/details/70160664每个InnoDB表具有一个特殊的索引称为聚簇索引(也叫聚集索引,聚类索引,簇集索引)。如果表上定义有主键,该主键索引就是聚簇索引。如果未定义主键,MySQL取第一个唯一索引(unique)而且只含非空列(NOT NULL)作为主键,InnoDB使用它作为聚簇索引。如果没有这样的列,...转载 2020-08-19 17:25:04 · 1993 阅读 · 0 评论 -
深入理解Mysql——锁、事务与并发控制
下面大部分博文转自https://blog.youkuaiyun.com/lemon89/article/details/51477497 SQL 语句主要可以划分为以下 3 个类别。DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter等。...转载 2018-10-12 18:30:39 · 225 阅读 · 0 评论 -
Mysql的基本理解
1.Mysql各语句的执行顺序from... where.. select ... .group by... having.... order by... limit 2.on和where的选择条件的区别:on后面的是连接条件,代表两个表建立关系所遵循的规则where后面的可以看作是筛选条件,是对最终结果集进行过滤所遵循的规则3.SQL语句分类DDL(Data Defin...原创 2017-06-19 12:04:08 · 346 阅读 · 0 评论 -
explain分析
各个属性的含义 id select查询的序列号 select_type select查询的类型,主要是区别普通查询和联合查询、子查询之类的复杂查询。DEPENDENT SUBQUERY:子查询内层的第一个SELECT,依赖于外部查询的结果集。DEPENDENT UNION:子查询中的UN转载 2017-06-02 18:02:55 · 375 阅读 · 0 评论 -
出现In aggregated query without GROUP BY原因
该原因是因为mysql的sql_mode默认开启了only_full_group_by 模式,导致Mysql的Sql的group by规则跟Oracle类似了,所以去掉这个默认就可以了.原创 2017-09-26 15:22:26 · 9373 阅读 · 0 评论 -
explain语句中的key_len计算
有时候表中有联合索引时,我们想确定我们的sql使用了几个索引字段,这时候就可以用explain查看该sql的key_len,然后通过key_len的值来判断该sql使用了几个索引字段。 假设有如下表:CREATE TABLE `tblGameRemain` ( `id` int(11) not null auto_increment primary key, `RecDat转载 2017-09-27 16:35:21 · 425 阅读 · 0 评论 -
MySql-Undo及Redo详解
转自https://blog.youkuaiyun.com/alexdamiao/article/details/51872477Undo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版本并发控制(简称:MVCC)。- 事务的原子性(Atomicity)事务中的所有操作,要么全部完成,要么不做任何操作,不能只做部分操作。如果在执行的过程中发生了错误,要...转载 2018-06-10 21:46:39 · 7308 阅读 · 1 评论 -
char跟varchar的区别
在建立数据库表结构的时候,为了给一个String类型的数据定义一个数据库的数据库类型,一般参考的都是char或者varcharchar的长度是不可变的,而varchar的长度是可变的也就是说,定义一个char[10]和varchar[10],如果存进去的是‘csdn’,那么char所占的长度依然为10,除了字符‘csdn’外,后面跟六个空格而varchar就立马把长度变为4了,取数据的...转载 2018-09-24 15:43:24 · 221 阅读 · 0 评论 -
docker 安装mysql 跟 Rabbitmq
1.安装MySQL转自https://blog.youkuaiyun.com/junshangshui/article/details/79432487首先用docker search mysql 查询有什么mysql镜像然后我们选用了mysql/mysql-serverdocker pull mysql/mysql-server:5.7.21 下载了镜像,然后运行镜像docker run...转载 2018-10-04 14:28:40 · 432 阅读 · 0 评论 -
分库分表
常用的切分方案数据的切分(Sharding)根据其切分规则的类型,可以分为两种切分模式。一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切可以称之为数据的垂直(纵向)切分;另外一种则是根据表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库(主机)上面,这种切分称之为数据的水平(横向)切分。垂直切分即业务切分下面来分析下垂直切分的优...转载 2018-10-12 18:29:16 · 169 阅读 · 0 评论 -
explain sql实际分析
1. 统计数据条数用count函数时,应该用count(1)或count(*)或count(索引字段) 不可以用普通字段,用了普通字段走了全表扫描 explain select count(datime) from tb_ipinfos; Using index:所需数据只需在 Index 即可全部获得,不须要再到表中取数据。2. select 字段时原创 2017-06-05 11:07:42 · 542 阅读 · 0 评论