- 博客(38)
- 资源 (1)
- 收藏
- 关注
原创 微信小程序使用ucharts 地图组件踩坑记录
// wxss<qiun-wx-ucharts type="map" opts="{{map_opts}}" chartData="{{mapData}}" canvas2d="{{true}}" bindgetIndex="getIndex" id="map" tooltipCustom="{{maptip}}"/>/*********** js 中的data *************/mapData: {},map_opts: { extra: { map: {
2022-05-23 21:55:57
1203
1
原创 Hexo+服务器搭建个人博客
使用的是centOS 8.x1. 安装node.js# 会安装node.js 以及包管理器npmsudo yum install nodejs2. 安装HexoHexo 是一个静态页面生成器,将编写好的markdown → 博客网页npm install -g hexo-cli安装Hexo之后,需要执行以下命令,从而在指定文件夹中新建所需要的文件hexo init myblog # myblog 是博客文件夹名,可以自己指定cd myblognpm install #
2022-01-06 00:17:15
806
原创 InnoDB 存储引擎(10)——一致性非锁定读
一致性非锁定读含义是指InnoDB 存储引擎通过 行多版本控制 的方式读取当前执行时间数据库中行的数据 如果读取的行正在执行delete或update 操作,此时读取操作不会因此去等待行上的锁的释放 相反的,InnoDB 存储引擎会去读取行的一个快照数据 快照数据是指该行的之前版本的数据,该实现是通过undo段来完成 undo 是用来在事务中回滚数据,因此快照数据本身是没有额外的开销;另外快照是历史数据,是不可能有事务会对历史数据进行修改的 下图即为一致性非锁定读,之所以有该名称,因为不
2021-11-13 20:28:03
765
原创 InnoDB 存储引擎(9)——InnoDB 逻辑存储结构
InnDB 逻辑存储结构图示组成 表空间(tablespace) 段(segment) 区(Extent) 页(Page) 行(Row) 表空间InnoDB 存储引擎逻辑存储结构的最高层,所有的数据都存放在表空间中 默认情况下,InnoDB 有一个共享表空间ibdata1,即所有数据(包括表数据)都存放在这个表空间 如果用户设置了参数innodb_file_per_table,则每张表内的数据可以单独放在一个表空间 注:启用了独立表空间,每张表的独立表空间内存放的只.
2021-11-13 18:41:39
590
原创 InnoDB 存储引擎(8)——InnoDB 存储引擎文件
1. 表空间文件InnoDB 采用将存储的数据按表空间进行存放的设计 在默认配置下,会有一个初始大小为10MB,名为ibdata1的文件 该文件就是默认的表空间文件 用户可以通过多个文件组成一个表空间所有基于InnoDB 存储引擎的表的数据都会记录到该共享表空间(innodb_data_file_path指向的表空间);innodb_file_per_table 参数用于指定独立表空间。 独立表空间存储的是该表的数据、索引和插入缓存BITMAP 等信息 其余信息存放在共享表空间,例如
2021-11-13 16:22:47
1296
原创 InnoDB 存储引擎(7)——日志文件
1. 错误日志错误日志文件对mysql 的启动、运行、关闭过程进行了记录 不仅记录了所有错误信息,也记录了一些警告信息或正确的信息 如果MySQL 数据库不能正常启动时,第一个必须查找的文件就是该文件2. 慢查询日志记录执行超过设定阈值的SQL 语句 能够定位存在问题的SQL 语句,从而进行SQL 语句层面的优化3. 查询日志记录所有对MySQL 数据库请求的信息(无论是否得到了正确的执行)4. 二进制日志(binary log,BINLOG)记录对MySQL 数据库执行更改的.
2021-11-13 15:55:40
176
原创 InnoDB 存储引擎(6)——异步IO
异步IO 简介Asynchronous IO,AIO 用户发出一个IO 请求后立即再发另一个IO请求,当全部IO 请求发送完毕后,等到所有IO操作的完成,就是AIO。 AIO 的另一个优势是可以进行IO Merge 操作,也就是可以将多个IO 合并为1 个IO,这样可以提高 IOPS的性能。例如: 用户需要访问页(space, page_no) 序列为(8, 6),(8, 7),(8, 8),每页大小为16KB 同步IO 需要进行3次IO 操作,而AIO 会判断到这三个页是连续的,因此AIO
2021-11-13 14:52:51
363
原创 InnoDB 存储引擎(5)——自适应哈希索引
自适应哈希索引简介Adaptive Hash Index,AHI InnoDB 会监控对表上各索引页的查询,根据访问的频率和模式自动为某些热点页建立哈希索引,从而提高访问速度自适应哈希索引建立的条件对建立哈希索引的页的连续访问模式必须是一样的。例如对于(a, b)这样的联合索引页,其访问模式可以是以下的情况 where a=xxx where a= xxx and b=xxx 访问模式一样指的是查询的条件一样,若交替进行以上的两种查询,那么InnoDB 存储引擎不会对该页构造AHI
2021-11-13 14:38:05
563
原创 InnoDB 存储引擎(4)——二次写(doublewrite)
目的带给InnoDB 存储引擎的是数据页的可靠性解决的问题当数据库宕机时,可能InnoDB 存储引擎正在写入某个页到表中,而这个页只写了一部分,比如16KB的页,只写了前4KB,之后就发生了宕机,这种情况被称为部分写失效(partial page write)。 如果没有二次写机制,出现部分写失效就会导致数据丢失的情况。二次写的概念发生写失效并不能使用redo 日志进行恢复,redo 日志记录的是对页的操作。如果本身这个页已经发生损坏,在对其进行重做是没有意义的 因此在redo log.
2021-11-13 00:07:56
540
原创 InnoDB 存储引擎(3)——插入缓冲(Insert Buffer)
目的提高对于非聚集索引插入的性能原因在一个具有非聚集且非唯一索引的表中做插入时,数据页的存放还是按主键(primary key)进行顺序存放的,但是对于非聚集索引叶子节点的插入不再是顺序的了,这时就需要离散的访问非聚集索引页,由于随机读取的存在而导致了插入操作性能下降,所以需要使用插入缓冲步骤对于非聚集索引的插入或更新操作,首先判断插入的非聚集索引页是否在缓冲池中 若在,则直接插入 若不在,则先放入一个Insert Buffer 对象中 然后再以一定频率和情况进行Insert .
2021-11-12 19:30:38
892
原创 InnoDB存储引擎(2)—— InnoDB 体系架构
1. 内存池 由多个内存块组成,负责的工作如下:维护所有进程 / 线程需要访问的多个内部数据结构 缓存磁盘上的数据,方便快速读取,同时在对磁盘文件的数据修改之前在这里缓存 重做日志(redo log)缓冲 ....2. 后台线程作用 负责刷新内存池中的数据,保证缓冲池中的内存缓存是最近的数据。 将已修改的数据文件刷新到磁盘文件,同时保证在数据库发生异常的情况下InnoDB 能恢复到正常运行状态 分类 Master Thread 是一个非常核心的后台线程 ...
2021-11-12 15:39:29
2567
原创 InnDB 存储引擎(1)——简介
1. 特点支持事务 支持行锁 支持外键 支持类似于Oracle 的非锁定读,即默认读取操作不会产生锁2. InnoDB 中的数据InnoDB 存储引擎将数据放在一个逻辑的表空间中,由InnoDB 存储引擎自身进行管理,对外透明 从MySQL 4.1 版本开始,可以将每个InnoDB 存储引擎的表单独存放到一个独立的ibd 文件中 InnoDB 存储引擎支持用裸设备(row disk)来建立其表空间3. InnoDB 与高并发性、高性能、高可用InnoDB 通过使用多版本并发控制(M
2021-11-11 23:13:06
405
原创 HTTP协议与HTTPS / SSL协议
Http 协议1. Http 发展HTTP/0.9 只有get 命令,且服务端直返HTML 格式字符串,服务器响应完毕就关闭TCP 连接 1991年提出 HTTP/1.0 1996 提出 可以发送任何格式内容,包括文字、图像、视频、二进制。也丰富了命令Get、Post、Head,请求和响应的格式加入头信息 每个TCP 连接只能发送一个请求,而新建TCP 连接的成本很高,导致Http/1.0 性能很差 HTTP/1.1(目前使用的最多协议) 1997年提出 引入持久连
2021-11-11 20:13:47
505
原创 TCP 三次握手和四次挥手
TCP/IP 基础——TCP 三次握手第一次握手:服务端确定客户端的发送能力没有问题 第二次握手:客户端确定服务端的接收能力没有问题以及发送能力没有问题 第三次握手:服务端确定客户端的接收能力没有问题...
2021-11-10 21:51:38
107
原创 redis 缓存穿透
数据库服务器崩溃缓存穿透现象系统平稳运行过程中,应用服务器流量随时间增量较大 redis 服务器命中率随时间逐步降低 redis 内存平稳,内存无压力 redis 服务器CPU 占用激增 数据库服务器压力激增 数据库崩溃问题排查redis 中大面积出现为命中 出现非正常URL 访问问题分析获取的数据在数据库中也不存在,数据库查询未得到对应的数据 redis 获取到null 数据未进行持久化,直接返回 下次此类数据到达重复上述过程 出现黑客攻击服务器解决方案(术)缓存nu
2021-11-10 17:03:12
198
原创 redis 缓存击穿
数据库服务器奔溃缓存击穿的现象系统平稳运行过程中,数据库连接量瞬间激增 redis 服务器无大量key 过期,redis 内存平稳,无波动 redis 服务器CPU 正常 数据库崩溃问题排查redis 中某个key过期,该key访问量巨大 多个数据请求从服务器直接压到redis后,均为命中 redis 在短时间内发起了大量对数据库中同一数据的访问问题分析 单个key 高热数据 但是该key 过期 解决方案(术)预先设定以电商为例,每个商家根据商铺等级,...
2021-11-10 15:28:58
90
原创 redis 缓存雪崩
缓存的含义是用redis 作为应用服务器的缓存中间件,即缓存就是redis数据库服务器崩溃(1)雪崩过程系统平稳运行过程中, 突然数据库连接量激增 应用服务器无法及时处理请求 大量408,500错误页面出现 客户反复刷新页面获取数据 数据库崩溃 应用服务器崩溃 重启应用服务器无效 redis服务器崩溃 redis 集群崩溃 重启数据库后再次被瞬间流量放倒问题排查在一个较短时间内,缓存中较多的key 集中过期 此周期内请求访问过期的数据,redis 未命中,redis 向数据
2021-11-10 14:51:25
188
原创 redis 缓存预热
问题:服务器启动后迅速宕机原因:请求数量较高 主从之间数据吞吐量较大,数据同步操作频度较高解决方案:前置准备工作日常例行统计数据访问记录,统计访问频度较高的热点数据 利用LRU 数据删除策略,构建数据留存队列(例如:storm+kafka配合)准备工作将统计结果中的数据分类,根据级别,redis 优先加载级别较高的热点数据 利用分布式多服务器同时进行数据读取,提高数据加载过程实施使用脚本程序固定出发数据预热过程 如果条件允许,使用CDN(内容分发网络),效果会更好总结
2021-11-10 13:39:21
453
原创 Redis 集群
集群简介1. 现状问题业务发展过程中遇到的峰值瓶颈 redis 提供的服务OPS 可以达到10万/秒 内存单机容量达到256G,当前业务需求内存容量1T 问题解决:集群的搭建2. 集群架构定义:集群就是使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果 作用 分散单台服务器的访问压力,实现负载均衡 分散单台服务器的存储压力,实现可扩展性 降低单台服务器宕机带来的业务灾难 Redis 集群结构设计1. 数据存储设计通过算法设计,计
2021-11-10 00:57:09
127
原创 哨兵模式·
哨兵简介1. 引入的原因现象:master 宕机 解决: 将宕机的master 下线 找一个slave 作为master 通知所有的slave 连接新的master 启动新的master 与 slave 全量复制*N + 部分复制*N 上述解决方案引出的问题 谁来确定master 宕机? 找一个master ? 怎么找? 修改配置后,原始的master 恢复了怎么办? 引入哨兵来解决上述引出的问题!!2. 哨兵定义:是一个分布式系统,用于对主从结构中的
2021-11-09 20:11:04
121
原创 redis 主从复制
主从复制简介高可用集群slave 宕机不会影响整个集群 master 宕机由slave 暂时推选出新的master 为了减缓master 压力,可以给slave 增加从机(slave) 可以建立master 集群主从复制的作用读写分离:master 写,slave 读,提高服务器的读写负载能力 负载均衡:基于主从结构,配合读写分离,由slave 分担master 负载,并根据需求的变化,改变slave 的数量,通过多个从节点分担数据读取负载,大大提高redis 服务器并..
2021-11-07 23:22:20
90
原创 redis 删除策略
过期数据过期数据的概念定义:设置了有限期,但过了其有限期的数据 有限期数据的标识 XX:具有时效的数据 -1:永久有效的数据 -2:已经过期的数据 或 被删除的数据 或未定义的数据 数据删除策略产生原因:过期数据,redis 数据库并不会立马进行删除。而是将cpu 让给更加重要的操作1. 定时删除创建一个定时器,当key 设置有过期时间,且过期时间到达时,由定时器任务立即执行对键的删除操作 优点 节约内存 到时就删除,快速释放不必要的内存占用.
2021-11-07 16:41:08
81
原创 Redis 持久化
redis 数据库持久化存储的原因:意外断电(redis 数据库是内存型数据库,意外断电会导致数据丢失)redis 数据库持久化存储策略RDB:以数据快照进行持久化存储 AOF:将数据的操作过程进行保存(以日志形式,关注点在数据的操作过程)...
2021-11-07 15:59:05
72
原创 Redis 基础
概念用C语言开发的高性能键值对(key-value)数据库特征数据间没有必然的关联关系 内部采用单线程机制进行工作 高性能 多数据类型支持 字符串类型(string) 列表类型(list) 散列类型(hash) 集合类型(set) 有序集合类型(sorted_set) 持久化支持,可以进行数据灾难恢复应用为热点数据加速查询(主要场景),例如 热点商品 热点新闻 热点资讯 推广类等高访问量信息等 任务队列,如秒杀、抢购、购票排队等 即时信息
2021-11-05 22:46:21
92
原创 SQL 查询优化
1. 大批量插入数据时的优化mysql 数据导入数据是通过load 命令进行的,但是适当的设置能够提高导入的效率-- local 代表从本地中的文件系统中进行数据导入-- 以csv 文件为例load data local infile 'filename' into table tb_name fields terminated by ',' lines terminated by '\n';1)主键顺序插入:数据按主键的顺序在文件中从第一行开始往下放2) 关闭唯一性校验set
2021-11-03 14:00:25
141
原创 索引的使用
1. 验证索引提升查询效率注:以下的查询语句基于tb_item 表,由黑马提供。本文不提供具体的数据和数据链接。1.1 根据 id 查询select * from tb_item where id = 1999\G;上图是上述查询语句的查询结果信息,从执行的时间来看,该条语句的查询效率很高。主要原因是id 是主键,有主键索引。1.2 根据title 字段进行查询select * from tb_item where title = '阿卡尔特 (OT-979) 冰川白 联通.
2021-10-27 23:36:12
405
原创 SQL 优化步骤
注:SQL 优化能够让开发人员写出更加高效的SQL 语句,从而提高系统效率。1. 优化SQL步骤1.1 查看SQL执行效率注:下述的命令能够得出数据库哪种操作使用更加频繁。-- 展示以 Com 开头的数据库状态信息(本次连接)show status like 'Com_______';-- 展示以 Com 开头的数据库状态信息(全局)show global status like 'Com_______';图2. 整个数据库的状态图1. 数据库一次连接的状态 ...
2021-10-26 22:48:03
649
原创 MySQL 存储引擎
1. 存储引擎概述1.1 定义就是存储数据,建立索引,更新查询数据等等技术的实现方式。存储引擎是基于表的,而不是基于库的。1.2 MySQL 中的存储引擎 Oracle,SqlServer 等数据库只有一种存储引擎。MySQL提供了插件式的存储引擎架构。所以MySQL存在多种存储引擎,可以根据需要使用相应的存储引擎,或者编写自定义的存储引擎。...
2021-10-24 17:02:29
963
原创 MySQL 体系结构
Mysql体系结构图整个MySQL Server组成Connection Pool:连接池组件 Management Services & Utilities:管理服务和工具组件 SQL interface:SQL 接口组件 Parser:查询分析器 Optimizer:优化器组件,进行查询优化 Caches & Storage Engines:存储引擎 File System:文件系统1. 连接层最上层是一些客户端和链接服务,包含本地sock ...
2021-10-24 15:55:21
1756
原创 存储过程和存储函数——语法
1. 变量 声明(DECLARE) -- DECLARE 可以定义一个局部变量,该变量作用范围智能在BEGIN...END中DECLARE var_name[,...] type [DEFAULT value]示例:delimiter $create procedure pro_test2()begin declare num int default 5; select num+ 10;end $delimiter ; 赋值(SET) SET
2021-10-23 18:07:50
363
原创 存储过程和存储函数——基本操作
1. 定义存储过程事先经过编译并存储在数据库中的一段SQL语句的集合。是一个没有返回值的函数存储函数是一个有返回值的过程。2. 优缺点优点:1. 简化应用开发人员的工作2. 减少数据在数据库和应用服务器之间的传输3. 有利于提高数据处理的效率3. 创建存储过程CREATE PROCEDURE procedure_name([proc_parameter[,...]])begin --SQL 语句end;示例-- 申明分隔符为$,
2021-10-23 17:03:46
118
原创 索引(下)
1. 索引分类1) 单值索引:一个索引只包含单个列,一个表可以有多个单列索引2) 唯一索引:索引列的值必须是唯一,但允许有空值3) 复合索引:即一个索引包含多个列2. 索引语法1. 创建索引默认是BTREE 类型CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON tbl_name(index_col_name, ...)2. 查看索引show index from t.
2021-10-23 16:06:12
123
原创 索引(上)
1. 索引概述定义:索引是帮助MySQL 高效查询的数据结构2. 索引优势劣势优势1. 提高数据检索效率,降低数据库的IO成本 2. 通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗劣势 1. 实际上索引也是一张表,保存了主键和索引字段,并指向实体类的记录,所以索引列也要占用空间 2. 虽然提高了查询效率,但是也降低了更新表的速度3. 索引结构MyS...
2021-10-23 13:15:28
109
原创 Docker 安装MySQL 8.x
1. 拉取 mysql 镜像# 拉取镜像库中最新版docker pull mysql:latest# 指定版本docker pull mysql:x.x.x2. 查看是否拉取成功docker images3. 运行容器docker run -d --restart=always \ -v /home/app/mysql/my.cnf:/etc/mysql/my.cnf \ -v /home/app/mysql/data/mysql:/var/lib/mysql
2021-10-22 14:55:08
160
1
原创 Docker 镜像使用与Docker 容器连接
Docker 镜像使用1. 列出镜像列表docker images2. 获取新的镜像docker pull <镜像名称:版本号>3. 查找镜像docker search <镜像名>4. 删除镜像docker rmi hello-worldDocker 容器连接1. 网络端口映射参数:-P:是容器内部端口随机映射到主机的高端口 -p:是容器内部端口绑定到指定的主机端口2. Docker 容器互联新建网络docker n
2021-10-21 21:24:51
372
原创 Docker 容器使用
1. 获取镜像# 本地没有 ubuntu 镜像,可以使用以下命令来载入 ubuntu 镜像docker pull ubuntu2. 启动容器docker run -it ubuntu /bin/bash参数说明:-i:交互式操作 -t:终端 ubuntu:ubuntu镜像 /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式Shell,因此用的是/bin/bash3. 启动已停止运行的容器# 查看所有容器docker ps -a# 从上一个命令的结果.
2021-10-21 20:32:12
78
原创 Docker 入门
Docker运行参数解析docker run ubuntu:15.10 /bin/echo "hello world"docker:Docker 的二进制执行文件 run:与docker 组合来运行一个容器 ubuntu15.10:指定要运行的镜像,Docker首先从本地主机查找镜像是否存在 不存在则从镜像仓库Docker Hub下载公共镜像 /bin/echo "hello world":在启动的容器里执行的命令注意:以上命令完整的意思: Docker 以...
2021-10-20 23:39:37
92
原创 Docker安装
Ubuntu Docker安装1. 阿里云镜像安装# 使用阿里云镜像curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun2. 使用国内daocloud一键安装命令
2021-10-19 14:55:14
248
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人