2021年11月1日
摘要: mongo官方存储引擎说明地址: Configuration File Options — MongoDB Manual mongodb有两种存储引擎:wiredTiger、inMemory,后者在4.0版本中已经废弃。wiredTiger比inMemory多了journal buffer机制,也就 阅读全文
posted @ 2021-11-01 18:27 梦幻朵颜 阅读(272) 评论(0) 推荐(0) 编辑
摘要: mongo内置角色列表 角色类型 类型说明 角色名称 说明 数据库一般角色(Database User Roles) 每个数据库都包含的一般角色; read 提供读取所有非系统集合和部分系统集合的数据的能力,系统集合包括:system.indexes,system.js和system.namespa 阅读全文
posted @ 2021-11-01 17:43 梦幻朵颜 阅读(319) 评论(0) 推荐(0) 编辑
  2021年10月31日
摘要: 数据备份 mongodump ./mongodump -h localhost:27022 -d lison -o /usr/local/mongodb/mongodb-linux-x86_64-3.4.18/backup -h :指定ip和端口; -d :备份的数据库名称 ; -o:指定备份的路径 阅读全文
posted @ 2021-10-31 20:40 梦幻朵颜 阅读(467) 评论(0) 推荐(0) 编辑
摘要: 本文主要介绍update,对增删改查其他操作感兴趣的请查看我的其他博文: 《mongodb-4.4.10版本与MySQL的SQL语法对比,以及mongodb增删改查入门demo》 《mongodb-4.4.10版本SQL查询进阶,mongodb与mysql的select SQL大比拼》 update 阅读全文
posted @ 2021-10-31 14:31 梦幻朵颜 阅读(189) 评论(0) 推荐(0) 编辑
  2021年10月30日
摘要: mongodb增删改查入门,请参考我的另一篇博文《mongodb-4.4.10版本与MySQL的SQL语法对比,以及mongodb增删改查入门demo》 在mongo中,单个文档最大不能超过16MB,否则就应该考虑使用引用(DBRef)了,在主表里存储一个id值,指向另一个表中的id值。 DBRef 阅读全文
posted @ 2021-10-30 20:41 梦幻朵颜 阅读(67) 评论(0) 推荐(0) 编辑
摘要: 基础的mongodb增删改查入门,请查看我的另一篇博文《mongodb-4.4.10版本与MySQL的SQL语法对比,以及mongodb增删改查入门demo》。 mongo的索引管理,请查看《mongodb-4.4.10版本的索引管理:创建、删除》 这篇文章给大家讲讲mongo的高阶查询。 查询选择 阅读全文
posted @ 2021-10-30 10:02 梦幻朵颜 阅读(215) 评论(0) 推荐(0) 编辑
  2021年10月24日
摘要: 本文介绍的是基于Pojo方式增删改查mongodb的例子,如果需要用document原始client API进行增删改查,参考我的另一篇博文《mongodb-4.4.10版本在Java中,基于Document的增删改查例子》 首先加入maven依赖: <dependency> <groupId>or 阅读全文
posted @ 2021-10-24 11:08 梦幻朵颜 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 本文介绍的是基于Document方式增删改查mongodb的例子,如果需要用Pojo类型的Spring API进行增删改查,参考我的另一篇博文《mongodb-4.4.10版本在Java中,基于Pojo的增删改查例子》 首先加入maven依赖: <dependency> <groupId>org.m 阅读全文
posted @ 2021-10-24 10:45 梦幻朵颜 阅读(404) 评论(0) 推荐(0) 编辑
摘要: Mongodb的增删改查,请查看我的另一篇文章《mongodb-4.4.10版本与MySQL的SQL语法对比,以及mongodb增删改查入门demo》 在查询中会用到各种运算符: 运算符类型 运算符 描述 范围 $eq 等于 $lt 小于 $gt 大于 $lte 小于等于 $gte 大于等于 $in 阅读全文
posted @ 2021-10-24 10:43 梦幻朵颜 阅读(49) 评论(0) 推荐(0) 编辑
  2021年10月23日
摘要: 学习mongodb SQL,请看我的另一篇博客:《mongodb-4.4.10版本与MySQL的SQL语法对比,以及mongodb增删改查入门demo》 正确的mongodb事务过程 >s = db.getMongo().startSession(); >s.startTransaction() > 阅读全文
posted @ 2021-10-23 17:14 梦幻朵颜 阅读(58) 评论(0) 推荐(0) 编辑
  2021年10月21日
摘要: 先了解下mongdb的数据结构与mysql的数据结构的对应关系,这样能帮我们更好的快速理解mongodb: Mongodb MySql DB(库) Database(数据库) Collection(集合) Table(表) Document(文档)单个文档最大不能超过16MB,否则就应该考虑使用引用 阅读全文
posted @ 2021-10-21 00:02 梦幻朵颜 阅读(191) 评论(0) 推荐(0) 编辑
  2021年10月20日
摘要: mongo官方文档地址:Configuration File Options — MongoDB Manual 一、自己手动下载及安装 第一步:下载 https://www.mongodb.com/try/download/community Mongodb社区版下载地址,我这里是mac,所以选择m 阅读全文
posted @ 2021-10-20 23:39 梦幻朵颜 阅读(1324) 评论(0) 推荐(0) 编辑
  2021年7月28日
摘要: 一颗B+树的层高最好控制在3层之内,到第4层性能会急剧下降。 计算机存储数据时,一个扇区512KB,一个文件是4KB,innodb存储一页是16KB,innodb的所有文件大小一定是16KB的整数倍,一定是16384 byte的整倍数。 一个叶子节点有多少字节可以存放指向下一节点的指针,取决于主键的 阅读全文
posted @ 2021-07-28 20:51 梦幻朵颜 阅读(1066) 评论(0) 推荐(0) 编辑
  2021年7月26日
摘要: 从锁的模式来区分:Shared Locks共享锁(行锁)、Exclusive Locks(行锁) 意向锁区分: Intention Shared Locks意向共享锁、Intention Exclusive Locks意向排它锁 从锁的算法区分:Record Locks记录锁、Gap Locks间隙 阅读全文
posted @ 2021-07-26 10:26 梦幻朵颜 阅读(955) 评论(0) 推荐(0) 编辑
  2021年7月24日
摘要: WAL机制 write ahead logging 预写日志,写完日志,再写入实际数据文件。 redo log 保证事务的持久性undo log 保证事务的一致性 redo日志记录内容:表空间id,页id,页面上的偏移量,偏移量改了什么值,这样记录空间就很小。而且记录是一条一条产生的,是一个顺序IO 阅读全文
posted @ 2021-07-24 16:39 梦幻朵颜 阅读(354) 评论(0) 推荐(0) 编辑
  2021年7月21日
摘要: 本章主要介绍Buffer Pool特性。 双写缓冲区参考《mysql5.7系统表空间和独立表空间,断,组,区,页的概念,innodb双写缓冲区》 AHI(自适应HASH索引)放的都是很热的数据,是buffer pool中的一部分。 即使select一行数据,innodb也会读取一页16kb数据,那么 阅读全文
posted @ 2021-07-21 20:42 梦幻朵颜 阅读(853) 评论(0) 推荐(0) 编辑
  2021年7月20日
摘要: SYS_TABLES 整个InnoDB存储引擎中所有的表的信息 SYS_COLUMNS 整个InnoDB存储引擎中所有的列的信息 SYS_INDEXES 整个InnoDB存储引擎中所有的索引的信息 SYS_FIELDS 整个InnoDB存储引擎中所有的索引对应的列的信息 备注:以上4个表的元数据直接 阅读全文
posted @ 2021-07-20 23:39 梦幻朵颜 阅读(327) 评论(0) 推荐(0) 编辑
摘要: mysql为了管理好页,提出了表空间的概念,表空间分为系统表空间和独立表空间两种。 一、独立表空间 系统表空间对应一个或多个系统文件,独立表空间会把数据存储在一个后缀名为ibd文件上,一个独立表空间就对应一个ibd文件。 行数据存储结构参考《mysql5.7行数据存储格式》 在分析行存储结构时,我们 阅读全文
posted @ 2021-07-20 23:11 梦幻朵颜 阅读(689) 评论(0) 推荐(0) 编辑
  2021年7月19日
摘要: 一、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 梦幻朵颜 阅读(1539) 评论(0) 推荐(0) 编辑
摘要: 一、JDBC setResultSetType(ResultSet.TYPE_FORWARD_ONLY); 告诉mysql发送流数据过来 setFetchSize(1000); 告诉mysql获取条数 拿部分数据过来,直到把所有数据都处理完毕。 用游标也可以。 但上述用游标或者流的方式,都是把压力都 阅读全文
posted @ 2021-07-19 20:59 梦幻朵颜 阅读(330) 评论(0) 推荐(0) 编辑
  2021年7月18日
摘要: 子查询种类回顾 select * from (select m1 from t1 limit 1); 像这种只返回一个值的被称为标量子查询。 select * from (select * from t1 limit 1); 像这种只返回一行数据的子查询被称为行子查询,会有多个列返回。 select 阅读全文
posted @ 2021-07-18 19:32 梦幻朵颜 阅读(99) 评论(0) 推荐(0) 编辑
  2021年7月15日
摘要: 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 梦幻朵颜 阅读(1674) 评论(0) 推荐(0) 编辑
  2021年7月6日
摘要: 使用 find / -name my.cnf 命令找到所在路径: /etc/my.cnf 估计这个路径就是mysql5.7安装到centos8里的默认存放配置文件的路径。 vim /etc/my.cnf 就可以修改了。 阅读全文
posted @ 2021-07-06 20:47 梦幻朵颜 阅读(858) 评论(0) 推荐(0) 编辑
  2021年7月5日
摘要: 这是一个SpringBoot框架,使用了r2dbc持久化层,mysql 5.7数据库,证明了一小时可insert六百万数据。r2dbc连接池设置:initial 20, max 200. 以下是jmeter压测工具截图,150个用户,间隔10秒,无限循环: 右上角: 01:00:15 执行时长 Sa 阅读全文
posted @ 2021-07-05 16:13 梦幻朵颜 阅读(761) 评论(0) 推荐(0) 编辑
  2021年7月4日
摘要: 一、表和索引设计 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 梦幻朵颜 阅读(1001) 评论(0) 推荐(0) 编辑
摘要: 一、IO成本 mysql的innodb存储引擎会把数据存储到磁盘上,这时候无论怎么优化SQL,都是需要从磁盘中读取数据到内存,就是IO成本,每次读取磁盘,至少耗时0.01秒,至少读一页,innodb一个页的数据存储大小是16KB,这个磁盘的IO时间成本是1.0,这里的1.0没有单位,就是个比较值。 阅读全文
posted @ 2021-07-04 06:56 梦幻朵颜 阅读(2726) 评论(0) 推荐(1) 编辑
摘要: 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 梦幻朵颜 阅读(799) 评论(0) 推荐(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 梦幻朵颜 阅读(131) 评论(0) 推荐(0) 编辑
  2021年7月3日
摘要: 索引合并/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 梦幻朵颜 阅读(620) 评论(0) 推荐(0) 编辑
  2021年6月28日
摘要: 一颗B+tree索引存储的数据大概是2000万,大概三四层左右,如果超过2000万数据,B+tree索引数会更高,可能达到五层六层。如果我们的数据过于庞大,可以考虑使用mysql分区存储,分区类型包括: 1)range分区 2)LIST分区 3)HASH分区 4)KEY分区 5)复合分区/子分区 注 阅读全文
posted @ 2021-06-28 21:49 梦幻朵颜 阅读(851) 评论(0) 推荐(0) 编辑
摘要: 先了解下mysql的B+tree索引结构,再来结合这个文章看会更好理解一点:《为什么数据库中要使用B+tree索引,而不用hash索引?MySQL中的B+tree索引介绍》 二级索引回表是随机IO操作。 按照聚簇索引或者二级索引顺序查询的操作是顺序IO。 顺序IO一定比随机IO更快! end. 阅读全文
posted @ 2021-06-28 20:14 梦幻朵颜 阅读(823) 评论(0) 推荐(0) 编辑
  2021年6月27日
摘要: MRR (Disk-Sweep Multi-Range Read) 当mysql读取一批二级索引时,会将根据这些二级索引拿到的主键id进行排好序,去批量回表到主键索引拿,这个优化过程由Mysql自行控制,我们无法干预,这就是MRR技术,多范围查询技术。 当然,实现这个条件比较苛刻。 end. 阅读全文
posted @ 2021-06-27 11:02 梦幻朵颜 阅读(175) 评论(0) 推荐(0) 编辑
  2021年6月23日
摘要: show full columns from t_user; 查看表全部结构。 Key = PRI 主键 Key = UNI 唯一索引 Key = MUL 普通索引 这张表的完整表结构长这样: CREATE TABLE `t_user` ( `id` int(11) NOT NULL AUTO_IN 阅读全文
posted @ 2021-06-23 07:51 梦幻朵颜 阅读(2568) 评论(0) 推荐(0) 编辑
  2021年6月20日
摘要: mysql官方文档地址: https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html 在mysql5.7官方文档描述中,可以使用innodb_stat_method来区别处理列的null值,处理方式有3种: 1、nulls_equal 阅读全文
posted @ 2021-06-20 17:42 梦幻朵颜 阅读(411) 评论(0) 推荐(0) 编辑
  2021年6月15日
摘要: 【慢查询配置】 show VARIABLES like 'slow_query_log'; -- 是否开启了慢查询 set GLOBAL slow_query_log=1; -- 启用慢查询 show VARIABLES like '%long_query_time%'; -- 多慢算慢呢?默认10 阅读全文
posted @ 2021-06-15 23:00 梦幻朵颜 阅读(772) 评论(0) 推荐(0) 编辑
  2021年6月14日
摘要: 《为什么数据库中要使用B+tree索引,而不用hash索引?MySQL中的B+tree索引介绍》 看完以上这篇文章,明白B+tree索引结构,对explain解析更有帮助。 MySQL官网doc文档: https://dev.mysql.com/doc/refman/5.7/en/explain-o 阅读全文
posted @ 2021-06-14 20:36 梦幻朵颜 阅读(1703) 评论(1) 推荐(0) 编辑
  2021年6月12日
摘要: Hash索引的查找速度很快,几乎是O1的,但是为什么不适用 HashMap 来做数据库索引呢? 1、区间值难找。因为单个值计算会很快,而找区间值,比如 100 < id < 200 就悲催了,需要遍历全部hash节点。 2、排序难。通过hash算法,也就是压缩算法,可能会很大的值和很小的值落在同一个 阅读全文
posted @ 2021-06-12 08:35 梦幻朵颜 阅读(1348) 评论(0) 推荐(1) 编辑
  2021年6月10日
摘要: 《为什么数据库中要使用B+tree索引,而不用hash索引?MySQL中的B+tree索引介绍》 只有看完以上这篇文章,才会明白为什么下面要这么设计。 1、能设计成数字类型的,就不要使用varchar,因为比如varchar(20),mysql就一定会开辟20个字节的内存出来,在计算的时候。 2、需 阅读全文
posted @ 2021-06-10 21:04 梦幻朵颜 阅读(81) 评论(0) 推荐(0) 编辑
  2021年6月6日
摘要: Begin -- 事务开启 insert ... update ... Save point pointA; -- 保存点A,名字随便取 insert ... update ... Save point pointB; -- 保存点B,名字随便取 Rollback to pointA; -- 回滚至 阅读全文
posted @ 2021-06-06 11:10 梦幻朵颜 阅读(462) 评论(0) 推荐(0) 编辑
摘要: innodb存储引擎支持数据库事务,事务有四大特性ACID:原子性 Atomicity一致性 Consistency持久性 Durability隔离性 isolation mysql事务隔离表 隔离级别 脏读 不可重复读 幻读 1 Read uncommitted 未提交读 可能 可能 可能 2 R 阅读全文
posted @ 2021-06-06 10:53 梦幻朵颜 阅读(174) 评论(0) 推荐(0) 编辑