redis对象 Redis对象我们介绍了redis主要用到的数据结构,比如简单字符串(SDS),双端链表,字典,压缩列表,整数集合等. redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些对象实现了一个对象系统,这个系统包含字符串对象,列表对象,哈希对象,集合对象和有序集合对象等. 通过这五种不同类型的对象,Redis可以在执行命令前,根据对象的类型判断一个对象是否可以执行给定的命令,使用对 2021-10-31 Redis
索引的使用 B+树索引适用的条件举例说明,我们创建一个表 123456789CREATE TABLE person_info(id INT NOT NULL auto_increment,name VARCHAR(100) NOT NULL,birthday DATE NOT NULL,phone_number CHAR(11) NOT NULL,country varchar(100) NOT NULL,P 2021-10-24 mysql
Mysql数据行格式 InnnDB行格式MySQL服务器上负责对表中的数据读取和写入工作的部分是存储引擎,我们常用的存储引擎InnoDB,真实数据在不同存储引擎中存放的格式一般是不同的,InnoDB真正处理数据的过程是发生在内存中的,所以需要把磁盘的数据加载到内存中,如果是处理写入或者修改请求的话,还需要把内存中的记录刷新到磁盘上,磁盘的读写速度和内存相比非常慢,所以InnoDB采取的方式是:将数据划分为若干个页,以页 2021-10-24 mysql
了解迭代器 迭代器模式就是提供一种方法对一个容器对象中的各个元素进行访问,而又不暴露该对象容器的内部细节 比如对于数据的遍历 1234int array[] = new int[3]; for (int i = 0; i < array.length; i++) { System.out.println(array[i]);} 对ArrayList的处理 12 2021-10-24 JDK
数据库与文件系统 数据库文件系统1SHOW VARIABLES LIKE 'datadir'; 可以查看数据库文件存储的位置 ,每个数据库都对应数据目录下的一个子目录,或者说对应一个文件夹,我们每当我们新建一个数据库时, MySQL 会帮我们做这两件事儿: 在 数据目录 下创建一个和数据库名同名的子目录(或者说是文件夹)。 在该与数据库名同名的子目录下创建一个名为 db.opt 的文件,这个文 2021-10-24 mysql
B+树索引 对于非主键的查找过程是如何? 索引如果想要快速的找到数据在哪个页,我没必须为数据页也建立一个目录,建这个目录必须完成下面这些事: 下一个数据页中用户记录的主键值必须大于上一个页中用户记录的主键值. 下面展示数据页模型的简单示例: 黄色代表主键,由于数据页不是连续的,在向表中插入许多数据后,可能是这样的效果:下面我们为这几个页做目录,每个目录项包含以下内容: 页的用户记录中最小的主 2021-10-24 mysql
从数据页到索引 数据页数据页是InnoDB管理内存空间的基本单位,InnoDB有不同类型的页,比如存放头部空间的页,存放node信息的页,存放undo日志的页,存放表中记录的页,被官方称为索引。 数据页的结构看一下各个部分的简单介绍我们自己存储的记录会按指定的行格式存储到User Records部分,每插入一条记录,都会从Free Space 部分,也就是尚未使用的存储空间申请一个记录大小空间划分到User 2021-10-24 mysql
Redis慢查询与事务 慢查询我们知道,redis执行命令有4个步骤: 发送命令 命令排队 执行命令 返回结果 慢查询只统计步骤3的时间对于慢查询功能,需要明确两件事: 预设阀值怎么设置? 慢查询记录存放在哪? Redis提供了slowlog-log-slower-than和slowlog-max-len配置来解决这两个问题。从字面意思就可以看出,slowlog-log-slower-than就是那个预设阀值,它 2021-10-24 Redis
SQL执行计划 Explain1explain select 1 执行上面sql语句,将得到下面执行计划: 解释一下每个字段的意思: id 在一个大的查询语句中每个 SELECT 关键字都对应一个唯一的 id select_typ SELECT 关键字对应的那个查询的类型 table 表名 partitions 匹配的分区信息 possible_keys 可能用到的索引 key 实际上使用的索引 k 2021-10-24 mysql