MySql 的@符号定义一个变量在sql里的占位符作用
摘要:set @orderNo := 'order3'; 先定义一个@开头的变量值为 order3 SELECT * t_order WHERE order_no = @orderNo; 查询订单号为 order3 的订单 DELETE FROM t_order WHERE order_no = @ord
阅读全文
posted @
2022-06-02 08:44
梦幻朵颜
阅读(216)
推荐(0) 编辑
mysql5.7版本,mysql server最大连接数,mysql 用户最大连接数
摘要:根据mysql的官方手册:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_connections mysql server最大连接数是10万,一般在my.ini 配置文件里的默认max_c
阅读全文
posted @
2021-11-07 16:05
梦幻朵颜
阅读(1070)
推荐(0) 编辑
mysql5.7一颗B+树可以存放多少行数据?为什么使用B+树(B+Tree)而不是B树(BTree)?
摘要:一颗B+树的层高最好控制在3层之内,到第4层性能会急剧下降。 计算机存储数据时,一个扇区512KB,一个文件是4KB,innodb存储一页是16KB,innodb的所有文件大小一定是16KB的整数倍,一定是16384 byte的整倍数。 一个叶子节点有多少字节可以存放指向下一节点的指针,取决于主键的
阅读全文
posted @
2021-07-28 20:51
梦幻朵颜
阅读(1094)
推荐(0) 编辑
mysql5.7的锁:乐观锁/共享锁、互斥/排他锁、意向锁、记录锁、行锁/表锁、间隙锁、临界锁、插入意向锁、自增锁、空间索引预测锁、隐式锁
摘要:从锁的模式来区分:Shared Locks共享锁(行锁)、Exclusive Locks(行锁) 意向锁区分: Intention Shared Locks意向共享锁、Intention Exclusive Locks意向排它锁 从锁的算法区分:Record Locks记录锁、Gap Locks间隙
阅读全文
posted @
2021-07-26 10:26
梦幻朵颜
阅读(999)
推荐(0) 编辑
mysql5.7事务的原理和MVCC,redo log与bin log的区别
摘要:WAL机制 write ahead logging 预写日志,写完日志,再写入实际数据文件。 redo log 保证事务的持久性undo log 保证事务的一致性 redo日志记录内容:表空间id,页id,页面上的偏移量,偏移量改了什么值,这样记录空间就很小。而且记录是一条一条产生的,是一个顺序IO
阅读全文
posted @
2021-07-24 16:39
梦幻朵颜
阅读(356)
推荐(0) 编辑
mysql5.7 Buffer Pool特性介绍。innodb三大特性:双写缓冲区、Buffer Pool、AHI(自适应HASH索引)
摘要:本章主要介绍Buffer Pool特性。 双写缓冲区参考《mysql5.7系统表空间和独立表空间,断,组,区,页的概念,innodb双写缓冲区》 AHI(自适应HASH索引)放的都是很热的数据,是buffer pool中的一部分。 即使select一行数据,innodb也会读取一页16kb数据,那么
阅读全文
posted @
2021-07-21 20:42
梦幻朵颜
阅读(868)
推荐(0) 编辑
mysql5.7 innodb数据字典
摘要:SYS_TABLES 整个InnoDB存储引擎中所有的表的信息 SYS_COLUMNS 整个InnoDB存储引擎中所有的列的信息 SYS_INDEXES 整个InnoDB存储引擎中所有的索引的信息 SYS_FIELDS 整个InnoDB存储引擎中所有的索引对应的列的信息 备注:以上4个表的元数据直接
阅读全文
posted @
2021-07-20 23:39
梦幻朵颜
阅读(336)
推荐(0) 编辑
mysql5.7系统表空间和独立表空间,断,组,区,页的概念,innodb双写缓冲区
摘要:mysql为了管理好页,提出了表空间的概念,表空间分为系统表空间和独立表空间两种。 一、独立表空间 系统表空间对应一个或多个系统文件,独立表空间会把数据存储在一个后缀名为ibd文件上,一个独立表空间就对应一个ibd文件。 行数据存储结构参考《mysql5.7行数据存储格式》 在分析行存储结构时,我们
阅读全文
posted @
2021-07-20 23:11
梦幻朵颜
阅读(708)
推荐(0) 编辑
mysql5.7行数据存储格式
摘要:一、mysql的4种行数据存储格式 mysql有4种存储格式:1)Compact 2) Redundant (5.0版本以前用,已废弃) 3) Dynamic (mysql5.7默认格式) 4) Compressed。 这是compact行格式数据存储结构: DB_ROW_ID(row_id) 如果
阅读全文
posted @
2021-07-19 23:23
梦幻朵颜
阅读(1555)
推荐(0) 编辑
mysql5.7全局考虑性能化,SQL优化的最后一步:profile性能分析
摘要:一、JDBC setResultSetType(ResultSet.TYPE_FORWARD_ONLY); 告诉mysql发送流数据过来 setFetchSize(1000); 告诉mysql获取条数 拿部分数据过来,直到把所有数据都处理完毕。 用游标也可以。 但上述用游标或者流的方式,都是把压力都
阅读全文
posted @
2021-07-19 20:59
梦幻朵颜
阅读(335)
推荐(0) 编辑
mysql5.7innodb引擎底层分析:子查询种类回顾
摘要:子查询种类回顾 select * from (select m1 from t1 limit 1); 像这种只返回一个值的被称为标量子查询。 select * from (select * from t1 limit 1); 像这种只返回一行数据的子查询被称为行子查询,会有多个列返回。 select
阅读全文
posted @
2021-07-18 19:32
梦幻朵颜
阅读(104)
推荐(0) 编辑
mysql5.7强制指定驱动表与被驱动表straight_join
摘要:select * from 驱动表 t1 STRAIGHT_JOIN 被驱动表 t2 ON t1.order_id = t2.order_id; select * from t_order t1 STRAIGHT_JOIN t_order_detail t2 ON t1.order_id = t2.
阅读全文
posted @
2021-07-15 20:42
梦幻朵颜
阅读(1741)
推荐(0) 编辑
mysql5.7版本centos8环境修改my.cnf配置文件
摘要:使用 find / -name my.cnf 命令找到所在路径: /etc/my.cnf 估计这个路径就是mysql5.7安装到centos8里的默认存放配置文件的路径。 vim /etc/my.cnf 就可以修改了。
阅读全文
posted @
2021-07-06 20:47
梦幻朵颜
阅读(870)
推荐(0) 编辑
mysql5.7使用r2dbc持久层框架性能飙升,一小时插入623万数据,平均每秒插入1723条
摘要:这是一个SpringBoot框架,使用了r2dbc持久化层,mysql 5.7数据库,证明了一小时可insert六百万数据。r2dbc连接池设置:initial 20, max 200. 以下是jmeter压测工具截图,150个用户,间隔10秒,无限循环: 右上角: 01:00:15 执行时长 Sa
阅读全文
posted @
2021-07-05 16:13
梦幻朵颜
阅读(779)
推荐(0) 编辑
mysql5.7决定SQL中IN条件是否走索引的成本计算,mysql中的index dive是在两个区间之间计算有多少条记录的方式
摘要:一、表和索引设计 CREATE TABLE `t_user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'primary key', `username` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8
阅读全文
posted @
2021-07-04 17:26
梦幻朵颜
阅读(1028)
推荐(0) 编辑
mysql5.7的SQL执行成本计算,IO成本和CPU成本,单表查询成本,多表连接查询成本,执行成本决定mysql是否走索引,.OPTIMIZER_TRACE,cost_info
摘要:一、IO成本 mysql的innodb存储引擎会把数据存储到磁盘上,这时候无论怎么优化SQL,都是需要从磁盘中读取数据到内存,就是IO成本,每次读取磁盘,至少耗时0.01秒,至少读一页,innodb一个页的数据存储大小是16KB,这个磁盘的IO时间成本是1.0,这里的1.0没有单位,就是个比较值。
阅读全文
posted @
2021-07-04 06:56
梦幻朵颜
阅读(2858)
推荐(1) 编辑
mysql5.7基于块的嵌套循环连接(Block Nested-Loop Join)
摘要:mysql5.7基于块的嵌套循环连接(Block Nested-Loop Join) select * from t_order t1,t_order_detail t2 where t1.id = t2.order_id and t1.amount > 100; 这里t1是驱动表,t2是被驱动表,
阅读全文
posted @
2021-07-04 06:44
梦幻朵颜
阅读(813)
推荐(0) 编辑
时间复杂度计算法
摘要:for (int i=0; i<3; i++){ for (int j=0; j<3; j++){ for (int k=0; k<3; k++){ // to do something } } } 这个过程是一个嵌套循环,时间复杂度是 O(i*j*k),i j k 都是3,所以时间复杂度是O(27
阅读全文
posted @
2021-07-04 06:28
梦幻朵颜
阅读(133)
推荐(0) 编辑
mysql5.7索引合并:交集、并集,EXPLAIN例子
摘要:索引合并/index merge。此文的所有SQL例子都基于以下表结构讲解: CREATE TABLE `t_user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'primary key', `username` varchar(40) CHAR
阅读全文
posted @
2021-07-03 19:17
梦幻朵颜
阅读(629)
推荐(0) 编辑
mysql5.7分区表
摘要:一颗B+tree索引存储的数据大概是2000万,大概三四层左右,如果超过2000万数据,B+tree索引数会更高,可能达到五层六层。如果我们的数据过于庞大,可以考虑使用mysql分区存储,分区类型包括: 1)range分区 2)LIST分区 3)HASH分区 4)KEY分区 5)复合分区/子分区 注
阅读全文
posted @
2021-06-28 21:49
梦幻朵颜
阅读(900)
推荐(0) 编辑