07-RabbitMQ 幂等性、优先级、惰性 幂等性概念 用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。 举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常, 此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱 了,流水记录也变成了两条。在以前的单应用系统中,我们只需要把数据操作放入事务中即可,发生错误立即回滚,但是再 2021-03-06 RabbitMQ #RabbitMQ
1-MySQL 主从复制部署配置 Mysql 的主从复制至少是需要两个 Mysql 的服务,当然 Mysql 的服务是可以分布在不同的服务器上,也可以在一台服务器上启动多个服务。 首先确保主从服务器上的 Mysql 版本相同。 主从复制复制功能 数据分布 负载均衡(读) 备份 高可用和故障切换 MySQL 升级测试 复制原理Mysql 中有一种日志叫做 bin 日志(二进制日志)。这个日志会记录下所有修改了数据库的 SQL 语句 2021-03-06 MySQL #MySQL
1-MySQL 忘记密码 1、介绍MySQL 忘记密码有两种解决方式,其实是一种。 关闭正在运行的MySQL服务。 使用 【跳过数据库权限验证】的方式启动 MySQL。有两种方式,任选一种 使用 service start mysqld -skip-grant-tables 命令启动 MySQL。-skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。 在 MySQL 的配置文件中 2021-03-06 MySQL #MySQL
2-MySQL 配置之开启慢查询日志 1.查看当前MySQL慢查询配置信息1234567891011121314mysql> show variables like '%slow%'; +---------------------------+-------------------------+| Variable_name | Value |+----------- 2021-03-06 MySQL #MySQL
2-MySQL 配置参数之 %timeout% 1.timeout变量知多少1234567891011121314151617mysql> show variables like '%timeout%';+-----------------------------+----------+| Variable_name | Value |+-----------------------------+---- 2021-03-06 MySQL #MySQL
2-MySQL 配置参数之 thread cache MySQL里面为了提高客户端请求创建连接过程的性能,提供了一个连接池也就是 Thread_Cache 池,将空闲的连接线程放在连接池中,而不是立即销毁.这样的好处就是,当又有一个新的请求的时候,mysql不会立即去创建连接 线程,而是先去 Thread_Cache 中去查找空闲的连接线程,如果存在则直接使用,不存在才创建新的连接线程. 有关Thread_Cache在MySQL有几个重要的参数,简单 2021-03-06 MySQL #MySQL
MySQL 之临时表 1、概述MySQL 中临时表主要有两类,包括外部临时表和内部临时表。 内部临时表:内部临时表主要有两类 一类是 information_schema 中临时表 一类是会话执行查询时,数据库优化器为了协助复杂SQL的执行而自行创建的临时表,用户可以通过 explain 命令,在 Extra 列中,看是否有 Using temporary,如果有就是用了内部临时表 外部临时表:用户通过语句 c 2021-03-06 MySQL #MySQL
MySQL 优化思路和案例 MYSQL 优化思路MySQL 存储千亿级的数据,是一项非常大的挑战。MySQL单表可以存储10亿级的数据,但是这个时候性能非常差。很多实验证明,MySQL单表容量在500万左右性能处于最佳状态。 常用的 MySQL 优化顺序是: 第一优化 sql 语句和索引; 第二加缓存 memcached,redis; 第三主从复制或主主复制,读写分离,可以在应用层做,效率高,也可以用三方工具,第三方工 2021-03-06 MySQL #MySQL
MySQL 命令之 CAST WHEN 前言在MySQL中有两个地方用到了关键字case: Flow Control Functions - CASE Operator Flow Control Statements - CASE Statement 在CASE Statement中不能有ELSE NULL子句,并且以END CASE结尾,而不是END。 CASE Statement主要用在复合语句中,比如存储过程;而CASE Op 2021-03-06 MySQL #MySQL
MySQL 命令之 EXPLAIN 执行计划 https://dev.mysql.com/doc/refman/5.7/en/explain-output.html 什么是执行计划?执行计划 是指一条 SQL 语句在经过 MySQL 查询优化器 的优化会后,具体的执行方式。 执行计划通常用于 SQL 性能分析、优化等场景。通过 EXPLAIN 的结果,可以了解到如数据表的查询顺序、数据查询操作的操作类型、哪些索引可以 被命中、哪些索引 实 2021-03-06 MySQL #MySQL
MySQL 命令之 SHOW STATUS SHOW STATUS 命令概述在 MySQL 中,SHOW STATUS 命令是一个强大的工具,用于显示 MySQL 服务器当前性能和状态的信息。这个命令会显示每个服务器变量的名字和值,状态变量是只读的。 SHOW STATUS 命令的使用你可以在 MySQL 客户端下运行 SHOW STATUS 或者在命令行运用 mysqladmin extended-status 来查看这些变量。 如果 2021-03-06 MySQL #MySQL
MySQL 命令之 WITH AS 公共表达式 1、WITH AS在 MySQL 中,WITH AS 用于创建一个临时的命名查询(也称为Common Table Expressions,CTE),这些子查询可以在后续的查询中引用,从而简化查询语句的编写。语法如下 12345678910WITH cte_name_1 [(column_name1, column_name2, ...)] AS ( -- CTE查询定义 SELECT 2021-03-06 MySQL #MySQL
MySQL 命令之 WITH Recursive 递归查询 with(Common Table Expressions/CTE) 在 MySQL 中被称为公共表达式,可以作为一个临时表然后在其他结构中调用.如果是自身调用那么就是后面讲的递归. 理论原理 MySQL with Recursive是什么? MySQL with Recursive是一种基于递归思想的 MySQL 查询方式,可以实现对数据的递归查询和处理,返回符合条件的数据。在 2021-03-06 MySQL #MySQL
MySQL 命令之 导入导出 SELECT ... INTO OUTFILE SELECT ... INTO OUTFILE 导出数据 https://dev.mysql.com/doc/refman/8.0/en/select-into.html SELECT...INTO OUTFILE 是 MySQL 中用于将查询结果导出到文件的语法。允许你将查询的结果写入一个文本文件。 语法12345SELECT * FROM Table INTO OUTFILE '/tmp/e 2021-03-06 MySQL #MySQL
MySQL 命令之 导入导出 mysql 导出执行 SQL 文件并保存输出语法 1mysql -u [用户名] -p[密码] [数据库名] < input.sql > output.txt 2> error.log 参数 input.sql:你的SQL文件。 output.txt:所有正常输出(如SELECT结果)会被保存到此文件。 error.log:错误信息会重定向到这里。 注意:-p 和密码之间不能有空 2021-03-06 MySQL #MySQL
MySQL 命令之 导入导出 mysqldump https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html 1、命令格式详解1.1、语法格式1mysqldump [OPTIONS] database [tables] 1.2、常用参数1234567891011--all-databases, -A: 备份所有数据库--databases, -B: 用于备份多个数据库,如果没有该选项 2021-03-06 MySQL #MySQL
MySQL 命令之插入重复数据时更新和忽略 MySQL 中常用的三种插入数据的语句: 123insert into -- 表示插入数据,数据库会检查主键,如果出现重复会报错;replace into -- 表示插入替换数据,需求表中有PrimaryKey,或者unique索引,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样;insert ignore -- 表示如果中已经存在相同的记录,则忽略当 2021-03-06 MySQL #MySQL
MySQL 命令之数据去重只保留一条数据 1、创建一张测试表123456create table poi (id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',poi_id bigint(20) NOT NULL COMMENT 'poi_id', PRIMARY KEY (`id`)); 2、插入测试数据1insert into poi (poi_id) values (10),(1 2021-03-06 MySQL #MySQL
MySQL 命令之查看和设置服务器配置和状态 MySQL 的选项文件(my.cnf)用于配置 MySQL 服务器,配置选项官方叫变量(Varialbes),但其实叫参数也是可以的,只要明白这俩是同一个东西就可以了。 MySQL 的变量分为以下两种: 系统变量:配置 MySQL 服务器的运行环境,可以用 show variables 查看 状态变量:监控 MySQL 服务器的运行状态,可以用 show status 查看 不同的变量按其作用 2021-03-06 MySQL #MySQL
MySQL 命令分类 SQL命令分为四种,分别为:DDL,DML,DCL,TCL。 DDL(Data Definition Language - 数据定义语言)DDL 主要操作数据库、表,主要包括: create:创建数据库及其对象(包括新建表,索引,视图,存储过程等)。 alter: 改变现有数据库的结构(包括: 修改索引,修改字段类型,删除索引)。 truncate: 删除表中所有记录,并删除已分配的空间。 2021-03-06 MySQL #MySQL