作者文章归档:zuojie@88.com

MyCat全局主键自增长


面我们介绍了MyCat的分库分表操作,那么同一张表中的数据会被保存在不同的数据库中,那么这就涉及到了主键维护的问题,此时肯定不能使用单个数据库中id自增的方式来处理了,这时我们就可以通过MyCat中提供的几种增长的方式来实现。

全局主键自增

一、本地文件自增方式

首先我们来看下第一种方式,也就是本地文件自增方式

1. 修改分片策略

我们原来配置的分片策略crc32slot是不支持主键自增的,所以我们需要修改为auto-sharding-long

img

2. 修改server.xml文件

server.xml文件中的sequnceHandlerType是用来配置主键生成类型的

sequn...

阅读全文 →

MyCAT 2分库分表


分库分表

一、分片规则介绍

rule.xml中定义了各种myCat支持的分片规则。

  1. 取模mod-long
  2. 自然月分片 sharding-by-month
  3. 按日期(天)分片sharding-by-date
  4. 按单月小时拆分sharding-by-hour
  5. 范围约定,提前规划好分片字段某个范围属于哪个分片,auto-sharding-long
  6. 范围求模分片
  7. 取模范围约束sharding-by-pattern
  8. 分片枚举sharding-by-intfile
  9. 固定分片hash算法
  10. 截取数字hash解析sharding-by-stringhash
  11. 一致性hash
  12. 日期范围hash分片rang...

阅读全文 →

MySQL编程进阶


MySQL流程控制的语法

存储过程

语法:

创建存储过程

drop procedure if exists [存储过程名] ;

delimiter [结束标记]
create procedure [存储过程名]([参数1], [参数2] ...)
begin
    [存储过程体(一组合法的sql语句)]
end [结束标记]

delimiter ;

参数,其格式为 [in|out|inout] parameter_name type

in #表示输入参数;
out #表示输出参数;
inout #表示此参数既可以输入也可以输出;
param_name #表示参数名称;
type...

阅读全文 →

MongoDB集群


MongoDB集群

引言

咱们把单机版的MongoDB讲了个大概,但很多情况下,单节点服务往往并不能满足系统需求,毕竟单节点部署的方式有很多隐患:

  • ①没有灾备能力,在单节点宕机的情况下,服务不可用会拖垮整个系统;
  • ②吞吐量不够:系统并发较高、访问量过大时,单节点无法承载流量;
  • ③拓展性不足:只能通过升级单节点的硬件配置,无法横向拓展;
  • ④数据安全风险:在极端情况下,数据损坏或出现丢失,无法有效恢复。

而上述提到的这一系列问题,在采用集群方案部署的情况下迎刃而解,所以本文一起来聊聊MongoDB集群,顺带以MongoDB集群为起点,共同探讨一下分布式存储的发展趋势~

一、MongoDB...

阅读全文 →

Redis常见面试题


Redis综述篇:与面试官彻夜长谈Redis缓存、持久化、淘汰机制、哨兵、集群底层原理!

一、Redis基本概念

  • 面试官心理: 靠!手上活都没干完又叫我过来面试,这不耽误我事么,今儿又得加班补活了........咦,这小伙子简历不错啊,先考考它Redis..........
  • 面试官: 谈谈你对Redis的理解?
  • 我: RedisANSI C语言编写的一个基于内存的高性能键值对(key-value)的NoSQL数据库,一般用于架设在Java程序与数据库之间用作缓存层,为了防止DB磁盘IO效率过低造成的请求阻塞、响应缓慢等问题,用来弥补DB与Java程序之间的性能差距,同时,也可以在DB...

阅读全文 →

MySQL变量


MySQL 变量用于存储临时值或配置信息,主要分为系统变量和用户定义变量两类。以下是具体说明及操作示例:

一、系统变量(System Variables)

由 MySQL 服务器维护,用于控制服务器行为或客户端会话的特性,分为全局变量(影响整个服务器)和会话变量(仅影响当前连接)。

1. 查看系统变量

  • 查看所有变量:SHOW VARIABLES(默认查会话变量)或 SHOW GLOBAL VARIABLES(查全局变量)。
  • 模糊查询:SHOW VARIABLES LIKE '参数名%'(支持通配符 % 或 _)。
  • 直接查询:通过 SELECT 访问变量值(会话变量用 @@sessi...

阅读全文 →

MySQL安装补充


Ubuntu22.04安装并配置MySQL

1.安装MySQL

# a.运行以下命令,安装MySQL
sudo apt -y install mysql-server

# b.运行以下命令,查看MySQL版本。
mysql -V
mysql  Ver 8.0.39-0ubuntu0.22.04.1 for Linux on x86_64 ((Ubuntu))

2.启动MySQL服务

sudo systemctl start mysql

3.设置开机启动MySQL

sudo systemctl enable mysql
sudo systemctl daemon-reload
...

阅读全文 →

MySQL二进制安装


1.下载mysql

MySQL社区版下载

https://downloads.mysql.com/archives/community/

image20200223135527926.png

2.二进制安装

2.1指定安装

将mysql安装到/usr/local/mysql目录中:

# Centos7安装依赖
yum install -y libaio libaio-devel ncurses ncurses-devel openssl openssl-devel numactl-devel  numactl ncurses-compat-libs

# Ubuntu22.04 安装依赖
sudo apt update
sudo ap...

阅读全文 →

MySQL管理与备份


MySQL 管理

1 系统数据库

Mysql 数据库安装完成后,自带了一下四个数据库,具体作用如下:

数据库 含义
mysql 存储 MySQL 服务器正常运行所需要的各种信息 (时区、主从、用 户、权限等)
information_schema 提供了访问数据库元数据的各种表和视图,包含数据库、表、字段类 型及访问权限等
performance_schema 为 MySQL 服务器运行时状态提供了一个底层监控功能,主要用于收集 数据库服务器性能参数
sys 包含了一系列方便 DBA 和开发人员利用 performance_schema 性能数据库进行性能调优和...

阅读全文 →

MySQL优化


SQL 优化

1.插入数据

  • 批量插入数据
insert into table values(col1,col2),(col1,col2);
  • 手动控制事务
start transaction;
...
commit
  • 主键顺序插入
1,2,3,4,5,78,99
  • 大批量插入
-- 客户端连接服务端时,加上参数 -–local-infile
mysql –-local-infile -u root -p

-- 设置全局参数local_infile为1,开启从本地加载文件导入数据的开关
set global local_infile = 1;

-- 执行load指...

阅读全文 →