MySQL JSON类型及存储引擎

MYSQL8 新增了JSON 类型。
在某些时候,对于网页中不需要经常改动的数据,一般以数组形式的字符串存入库中。这样不易更改 数据。使用 JSON 类型可以很好的解决这个问题

1.JSON类型

创建方式:
CREATE TABLE 表名
...
json字段名称 JSON
...)
下面创建一个字段为 JSON 类型
在这里插入图片描述

基本方法

常用的方法:
JSON_ARRAY()
JSON_OBJECT()
JSON_SET()
JSON_REPLACE()
JSON_REMOVE()
在这里插入图片描述使用 JSON_ARRAY()JSON_OBJECT() 方法可以创建 JSON 对象
在这里插入图片描述使用 JSON_PRETTY() 可以将数据 以更清晰的格式显示
下面定义了 @data 变量,使用 JSON_PRETTY() 查询
在这里插入图片描述

在 JSON 数组或对象中添加值一般只用到 JSON_SET 以及 JSON_REPLACE
在这里插入图片描述
注意:上面的方法都是使用的 SELECT 关键字,并不会更改原数据。

可以和其他的语句一起使用,更改表数据
在这里插入图片描述
上面将 json_tab 表中的 content 字段(json 中的 icp 属性) 更改成了 lmonkey

在这里插入图片描述
删除数据
在这里插入图片描述
在这里插入图片描述
上面使用 JSON_EXTARCT 方法,查询了 json_tab 表中 content 字段的 $.icp 属性

JSON_CONTAINS_PATH( ) 可以有多个参数,下面来实现一下
在这里插入图片描述
上面有 @j_data 变量,为 JSON 类型。
然后使用JSON_CONTAINS_PATH 查询了其变量中是否有 age 属性。one 参数的意思为,只要有一个属性(或者JSON 数组的索引)存在,返回 1 。否则返回 0。
除了 one 参数还有一个 all 参数,意为,之后的参数都必须在当前 JSON数据 中存在,否则返回 0。

2.存储引擎

MYSQL 可以将数据以不同的技术方式来储存到 文件 / 内存 中,这种技术就是存储引擎
每一中存储引擎都有不同的机制,索引技巧以及内置功能等

建表时,可以指定其存储引擎。建表后,也可以使用 SHOW CREATE TABLE 表名来查询当前所使用引擎,如下
在这里插入图片描述

存储引擎在 MYSQL8 有以下几种
在这里插入图片描述
其中最常用到的就是 innoDB,其次就是 MyISAM

存储引擎的特点
在这里插入图片描述

设置表引擎的方法:

  • 修改 MYSQL 配置文件:defaul-storage-engine = 引擎名
  • 修改表的引擎:ALTER TABLE 表名 ENGINE = 引擎名
  • 创建表时,指定引擎:
    CREATE TABLE 表名
    ....
    )ENGINE = 引擎名;

3.并发控制

  • 并发控制:当多个连接同时对记录进行修改时,保持数据的一致性、完整性

  • 锁:
    共享锁 ( 读锁 ):同一时间段,可以多个用户进行数据读取,期间不会影响数据
    排他锁 ( 写锁 ):在任何时间,都只能一个用户来进行数据写入,在此期间会阻塞其他锁 ( 写、读 ) 操作

  • 锁颗粒:
    表锁:一种开销最小的锁策略 (只对表上锁,可以不管表中的字段)
    行锁:一种开销最大的锁策略 (对表中的数据行来上锁,需要牵扯更多的数据,开销更大)

4.事务处理

作用:保持数据的完整性

在这里插入图片描述
上面的 user1 向 user2 转账 500 元。
实现步骤:

  1. user1 账户扣除 500 元
  2. user2 增加 500 元

当上面转账出现问题,执行完 步骤一 ,步骤二没执行。
这时就可以使用 MYSQL 事务处理机制将 数据回滚至之前的状态。

4.主从复制

若是出现,当前表是锁表的状态,此时不能读表,需要等待表开锁。这时,可以不用等待,使用主从复制,主库为锁表状态,当前读表的操作在从库中进行操作。让主库负责写,从库负责读
当主表夯机时,可以使用从库当作主库
架构扩展。多库储存可以提高 I/O 性能。

运行原理
在这里插入图片描述
主库(mastser)内的增删改操作会写入 日志文件(binlog)中,并发送给 从库(slave)。
从库 会建立对主库的连接,使得用户可以进行读操作。从库也会将 拿到的 日志文件(binlog),写入自己的 日志文件(relay)中,并根据(binlog)同步跟主库的操作。

配置步骤(基于日志点): https://www.bilibili.com/video/BV1CJ411i7AK?p=77

基于 GTID 复制
在这里插入图片描述

配置步骤(GTID)

  1. 主服务器 创建用户名,
    在这里插入图片描述
  2. 主服务器配置 ini 文件
    在这里插入图片描述
  3. 重启主服务器 mysql 服务
  4. 从服务器配置 ini 文件,并重启 mysql 服务
    在这里插入图片描述
  5. 主服务器输入 导出 命令,导出数据(目的为从主数据一致)
    在这里插入图片描述
    此时会生成对应的 导出 sql 文件 ,如下
    在这里插入图片描述
  6. 从库拷贝主库导出文件,并输入导入命令
    注意:将主库中导出的 sql文件,拷贝到从库中的同一目录下,再输入导入命令,如下
    在这里插入图片描述
  7. 关联完毕,输入命令,启动从库
    配置信息:
    在这里插入图片描述
    启动命令:
    在这里插入图片描述
  8. 输入命令,查看书否启动成功
    SHOW SLAVE STATUS/G
    在这里插入图片描述
    启动成功
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值