随笔分类 -  database

摘要:介绍 BoltDB 是一个用 Go 语言编写的嵌入式键/值数据库。以下是关于 BoltDB 的一些基本介绍: 键/值存储: BoltDB 为应用程序提供了简单的键/值存储接口。 事务: BoltDB 支持完整的 ACID 事务。 嵌入式: 与像 MySQL 或 PostgreSQL 这样的数据库系统 阅读全文
posted @ 2023-09-09 21:18 daemon365 阅读(462) 评论(0) 推荐(0) 编辑
摘要:什么是索引 一般的应用系统,都是读多写少。而且插入操作和一般的更新操作很少出现性能问题(因为有redo log锁cache缓存)。在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。说起加速查询,就不得不提到索引了。索引的核心思想就是加速查询 阅读全文
posted @ 2021-09-02 16:26 daemon365 阅读(54) 评论(0) 推荐(0) 编辑
摘要:更新语句执行流程 下面是这个表的创建语句,这个表有一个主键 ID 和一个整型字段 c: create table T(ID int primary key, c int); 如果要将 ID=2 这一行的值加 1,SQL 语句就会这么写: update T set c=c+1 where ID=2; 阅读全文
posted @ 2021-09-02 15:29 daemon365 阅读(44) 评论(0) 推荐(0) 编辑
摘要:msyql执行流程 你有个最简单的表,表里只有一个 ID 字段,在执行下面这个查询语句时:: select * from T where ID=10; 我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在 MySQL 内部的执行过程。 下面我给出的是 MySQL 的基本架构示意图,从中你可以 阅读全文
posted @ 2021-09-02 11:42 daemon365 阅读(361) 评论(0) 推荐(0) 编辑
摘要:消息队列 本篇文章主要介绍了 RabbitMQ 这种消息队列,从消息队列的概念、应用场景、安装方式到它的核心概念、五种工作模式。在安装的时候推荐使用 Docker 方式进行安装。重点需要理解的就是消息队列的应用场景、核心概念和 RabbitMQ 的五种工作模式,其中用的比较多的就是发布订阅模式、主题 阅读全文
posted @ 2021-08-31 22:47 daemon365 阅读(598) 评论(0) 推荐(0) 编辑
摘要:redis主从同步 原理: 从服务器向主服务器发送 SYNC 命令。 接到 SYNC 命令的主服务器会调用BGSAVE 命令,创建一个 RDB 文件,并使用缓冲区记录接下来执行的所有写命令。 当主服务器执行完 BGSAVE 命令时,它会向从服务器发送 RDB 文件,而从服务器则会接收并载入这个文件。 阅读全文
posted @ 2021-08-22 10:57 daemon365 阅读(124) 评论(0) 推荐(0) 编辑
摘要:Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失。 RDB持久化 redis提供了RDB持久化的功能,这个功能可以将redis在内存中的的状态保存到硬盘中,它可以手动执行。 也可以再 阅读全文
posted @ 2021-08-22 10:55 daemon365 阅读(56) 评论(0) 推荐(0) 编辑
摘要:什么是发布和订阅 Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。 Redis 客户端可以订阅任意数量的频道。 发布和订阅 1、客户端可以订阅频道如下图 2、当给这个频道发布消息后,消息就会发送给订阅的客户端 发布订阅命令行实 阅读全文
posted @ 2021-08-22 10:51 daemon365 阅读(53) 评论(0) 推荐(0) 编辑
摘要:redis介绍 Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。 Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的k 阅读全文
posted @ 2021-08-22 10:49 daemon365 阅读(99) 评论(0) 推荐(0) 编辑
摘要:什么是lua Lua是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figu 阅读全文
posted @ 2021-08-22 00:35 daemon365 阅读(54) 评论(0) 推荐(0) 编辑
摘要:事务是什么 事务就是指逻辑上的一组SQL语句操作,组成这组操作的各个SQL语句,执行时要么全成功要么全失败。 在 MySQL 中,事务支持是在引擎层实现的。MySQL 是一个支持多引擎的系统,但并不是所有的引擎都支持事务。 比如 MySQL 原生的 MyISAM 引擎就不支持事务,这也是 MyISA 阅读全文
posted @ 2021-08-20 15:18 daemon365 阅读(60) 评论(0) 推荐(0) 编辑
摘要:MySQL中的锁 数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。 根据加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类 全局锁 全局锁就是对整个数据库实例加锁。 MyS 阅读全文
posted @ 2021-08-20 15:16 daemon365 阅读(54) 评论(0) 推荐(0) 编辑
摘要:主键约束 主键可以是表中的某一列,也可以是表中的多个列所构成的一个组合;其中,由多个列组合而成的主键也称为复合主键。在MySQL中,主键列必须遵守以下规则。 (1)每一个表只能定义一个主键。 (2)唯一性原则。主键的值,也称键值,必须能够唯一表示表中的每一条记录,且不能为NULL。 (3)最小化规则 阅读全文
posted @ 2021-08-20 15:10 daemon365 阅读(243) 评论(0) 推荐(0) 编辑
摘要:数值类型 MySQL支持所有标准SQL数值数据类型。 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。 关键字INT是INTEGER的同义词,关键字DEC是DECIMAL 阅读全文
posted @ 2021-08-20 15:02 daemon365 阅读(54) 评论(0) 推荐(0) 编辑
摘要:安装 下载第三方包: go get -u github.com/go-redis/redis/v9 连接 // 定义一个rdis客户端 var redisdb *redis.Client // 初始化 func initClient() (err error) { redisdb = redis.N 阅读全文
posted @ 2021-08-19 17:09 daemon365 阅读(145) 评论(0) 推荐(0) 编辑
摘要:在项目中我们通常可能会使用database/sql连接MySQL数据库。本文借助使用sqlx实现批量插入数据的例子,介绍了sqlx中可能被你忽视了的sqlx.In和DB.NamedExec方法。 sqlx介绍 在项目中我们通常可能会使用database/sql连接MySQL数据库。sqlx可以认为是 阅读全文
posted @ 2021-08-19 17:04 daemon365 阅读(216) 评论(0) 推荐(0) 编辑