![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据库
文章平均质量分 84
数据库
江海i
不积小流,无以成江海。
展开
-
redis分布式锁
设置锁的同时设置过期时间:代码演示:UUID优化:如果线程A在加锁并设置过期时间之后,当前服务器A卡顿,并且过期时间以到,线程B再进行加锁,此时线程A反应过来,执行释放锁代码,此时释放的就是线程B的锁。因此可以使用UUID来标记锁来防止误删。LUA脚本优化:当线程A将要执行手动释放锁时,锁过期时间到了,自动过期,此时线程B就获取到了锁,由于A已经判断完成UUID相等,因此此时线程A释放的是线程B的锁。导致互相干扰。即不存在原子性。lua脚本类似于redis事务,有原子性,不会被插队。1原创 2022-06-05 10:13:12 · 124 阅读 · 0 评论 -
重拾MySQL之锁
加锁:如图加锁之后,进行查询可以执行,但执行删除时回进入阻塞状态。释放锁:执行释放锁之后,阻塞的语句也回立即执行。缺点:解决方案:在InnoDB引擎中,在执行备份时加上参数来完成不加锁的一致性备份。1.2 表级锁1.2.1 表锁加锁表共享读锁:只能读,不能写,切不会阻塞其它客户端的读。如图,对表加锁之后,当前会话客户端和其它客户端均可以查询,但当前客户端执行更新无法进行;其它客户端执行更新会进入阻塞状态,直到当前客户端释放锁才会执行语句。表独占写锁:即当前客户端独占(可以读和写原创 2022-06-05 09:02:29 · 125 阅读 · 0 评论 -
redis之事务和持久化
组队时某个命令失败了,执行时整个的所有队列都会被取消;执行阶段某个命令出现了错误,只有报错的命令不执行,其它的命令依然执行,不会回滚。悲观锁:即每次操作都只允许一个线程进行操作,只有当当前线程释放锁之后,其它线程才可以操作。乐观锁:拿数据时都默认认为不会被修改,在更新时判断一下期间别人有没有更新数据,可以引入一个版本号进制用来判断是否更新。适用于多读的场景,可以提高吞吐量。乐观锁展示:使用来监视一个或多个key,如果在事务执行之前key被其它命令改动,这个事务将被打断。客户端A,监听,对客户端B也开原创 2022-06-02 16:54:47 · 262 阅读 · 0 评论 -
redis安装基本操作和数据类型
启动redis并设置密码进入redis认证密码2. Redis相关介绍默认有16个数据库,从数组0开始,默认使用的是0号库。单线程+多路IO复用:单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性),即一个线程处理所有网络请求,其他模块仍用了多个线程;IO多路复用指多个channel或者网络IO,共用一个或者少量线程来处理。3. 基本数据类型3.0 常见key操作查看当前库的所有key:判断key是否存在:查看key类型:删除key原创 2022-06-01 15:29:18 · 205 阅读 · 0 评论 -
MySQL进阶之SQL优化
1.2 手动事务提交1.3 主键顺序插入1.4 大批量插入数据例如:配置:因为底层的B+树种维护了一个双向指针,保证有序,在新增数据超过当前页时会进行溢出,如果是有序的,直接开辟一个新的页:如果是乱序主键插入:由于新的元素无法放到当前页中,会将当前页的后50%分裂出去,与新元素重新放到一个新的页中,而后更改指针指向,这种现象称为页分裂。原创 2022-06-01 09:23:51 · 217 阅读 · 0 评论 -
MySQL进阶之存储引擎和索引
1. 存储引擎1.1 体系结构MySQL体系结构主要分为四层:连接层:完成连接处理、授权认证等相关的安全方案;服务器也会验证接入的客户端的操作权限;服务层:完成大多数的核心服务功能,SQL接口、缓存的查询、SQL分析和优化、函数等。引擎层:负责MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信。不同存储引擎功能不同。存储层:讲数据存储在文件系统上,完成和存储引擎之间的交互。1.2 存储引擎简介存储引擎就是存储数据、建立索引、更新/查询数据的实现方式。存储引擎是基于表的原创 2022-06-01 08:26:25 · 264 阅读 · 0 评论 -
重拾MySQL之多表联查和事务
1. 多表查询数据库AQSET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for address-- ----------------------------DROP TABLE IF EXISTS `address`;CREATE TABLE `address` ( `id` int(255) NOT NULL AUTO_INCREMENT,原创 2022-04-19 21:28:29 · 671 阅读 · 0 评论 -
重拾MySQL之函数和约束
1. 函数函数是指可以直接被一段程序调用的程序或代码。1.1 字符串函数CONCAT(S1,S2,...,Sn):字符串拼接:将多个字符串拼接成一个字符串;1.2 数值函数1.3 日期函数1.4 流程函数原创 2022-04-17 21:16:29 · 369 阅读 · 0 评论 -
重拾MySQL之概述和SQL语言
1. 数据库概述1.1 SQLSQL的全程是 Structured Query Language,用来和数据库打交道,完成和数据库的通信,SQL是一套标准。1.2 数据库数据库通常是一组或者一个文件,保存了一些符合特定规格的数据,称为Database,简称DB;数据库管理系统:DataBaseMangement,简称DBMS,用来专门管理数据库中数据的。1.3 MySQL概述MySQL最初由“MySQL AB ”公司开发后经由Sun公司一起被Oracle.原创 2022-04-12 20:36:56 · 614 阅读 · 0 评论