
数据库
数据库、消息队列
书香水墨
积跬步,行千里。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MySql8.0主从复制跳过错误sql
查询从库的 GTID 状态:使用。查询主库的 GTID 状态:使用。确认 GTID 模式是否启用:查询gtid_mode系统变量。查询 GTID 的详细状态:查询表。查询 GTID 的执行历史:查询表。查询 GTID 的当前状态:查询表。通过这些方法,你可以全面了解 MySQL 中 GTID 的状态和执行情况。原创 2025-07-28 23:11:37 · 593 阅读 · 0 评论 -
ES安装、开启安全认证以及https
生成p12文件后,将p12文件复制到其他节点的机器中,尽量保持p12的目录路径一致。原创 2025-04-03 17:19:47 · 275 阅读 · 0 评论 -
MySQL 表结构优化
mysql转载 2022-12-19 16:43:30 · 298 阅读 · 0 评论 -
MySQL SQL优化与索引优化
mysql转载 2022-12-19 16:42:24 · 177 阅读 · 0 评论 -
MySQL 的主从复制
10.1、MySQL主从复制的原理:Slave从Master获取binlog二进制日志文件,然后再将日志文件解析成相应的SQL语句在从服务器上重新执行一遍主服务器的操作,通过这种方式来保证数据的一致性。由于主从复制的过程是异步复制的,因此Slave和Master之间的数据有可能存在延迟的现象,只能保证数据最终的一致性。在master和slave之间实现整个复制过程主要由三个线程来完成:(1)Slave SQL thread线程:创建用于读取relay log中继日志并执行日志中包含的更新,位于slav原创 2022-12-19 16:35:44 · 539 阅读 · 0 评论 -
MySql 分区
分区就是将表的数据按照特定规则存放在不同的区域,也就是将表的数据文件分割成多个小块,在查询数据的时候,只要知道数据数据存储在哪些区域,然后直接在对应的区域进行查询,不需要对表数据进行全部的查询,提高查询的性能。同时,如果表数据特别大,一个磁盘磁盘放不下时,我们也可以将数据分配到不同的磁盘去,解决存储瓶颈的问题,利用多个磁盘,也能够提高磁盘的IO效率,提高数据库的性能。在使用分区表时,需要注意分区字段必须放在主键或者唯一索引中、每个表最大分区数为1024;常见的分区类型有:Range分区、List分区、Has原创 2022-12-19 16:34:07 · 350 阅读 · 0 评论 -
MySQL 索引的实现原理
索引本质上就是一种通过减少查询需要遍历行数,加快查询性能的数据结构,避免数据库进行全表扫描,好比书的目录,让你更快的找到内容。(一个表最多16个索引)6.1、索引的优缺点:(1)索引的优点:减少查询需要检索的行数,加快查询速度,避免进行全表扫描,这也是创建索引的最主要的原因。如果索引的数据结构是B+树,在使用分组和排序时,可以显著减少查询中分组和排序的时间。通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。(2)索引的缺点:当对表中的数据进行增加、删除和修改时,索引也要进行更新,原创 2022-12-15 23:31:25 · 766 阅读 · 0 评论 -
MySql 主键一般用自增ID还是UUID
14、主键一般用自增ID还是UUID?(1)自增ID:使用自增ID的好处:字段长度较 UUID 会小很多。数据库自动编号,按顺序存放,利于检索无需担心主键重复问题使用自增ID的缺点:因为是自增,在某些业务场景下,容易被其他人查到业务量。发生数据迁移时,或者表合并时会非常麻烦在高并发的场景下,竞争自增锁会降低数据库的吞吐能力(2)UUID:通用唯一标识码,UUID是基于当前时间、计数器和硬件标识等数据计算生成的。使用UUID的优点:唯一标识,不用考虑重复问题,在数据拆分原创 2022-12-15 23:30:11 · 5040 阅读 · 0 评论 -
MySql 分库分表:垂直分表、垂直分库、水平分表、水平分库
读写分离解决的是数据库读写操作的压力,但是没有分散数据库的存储压力,利用分库分表可以解决数据库的储存瓶颈,并提升数据库的查询效率。12.1、垂直拆分:(1)垂直分表:将一个表按照字段分成多个表,每个表存储其中一部分字段。一般会将常用的字段放到一个表中,将不常用的字段放到另一个表中。优点:(1)避免IO竞争减少锁表的概率。因为大的字段效率更低,第一,大字段占用的空间更大,单页内存储的行数变少,会使得IO操作增多;第二数据量大,需要的读取时间长。(2)可以更好地提升热门数据的查询效率。(2)原创 2022-12-15 23:29:41 · 3198 阅读 · 0 评论 -
MySql 读写分离
11.1、实现原理:读写分离解决的是,数据库的写操作,影响了查询的效率,适用于读远大于写的场景。读写分离的实现基础是主从复制,主数据库利用主从复制将自身数据的改变同步到从数据库集群中,然后主数据库负责处理写操作(当然也可以执行读操作),从数据库负责处理读操作,不能执行写操作。并可以根据压力情况,部署多个从数据库提高读操作的速度,减少主数据库的压力,提高系统总体的性能。11.2、读写分离提高性能的原因:(1)增加物理服务器,负荷分摊;(2)主从只负责各自的写和读,极大程度的缓解X锁和S锁争用;(3原创 2022-12-15 23:28:27 · 221 阅读 · 0 评论 -
MySql explain
执行计划是SQL语句经过查询分析器后得到的 抽象语法树 和 相关表的统计信息 作出的一个查询方案,这个方案是由查询优化器自动分析产生的。由于是动态数据采样统计分析出来的结果,所以可能会存在分析错误的情况,也就是存在执行计划并不是最优的情况。通过explain关键字知道MySQL是如何执行SQL查询语句的,分析select 语句的性能瓶颈,从而改进我们的查询,explain的结果如下:重要的有id、type、key、key_len、rows、extra:(1)id:id列可以理解为SQL执行顺序的标识,原创 2022-12-15 23:27:09 · 437 阅读 · 0 评论 -
MySql 数据库中的锁机制
当数据库中多个事务并发存取同一数据的时候,若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。MySQL锁机制的基本工作原理就是,事务在修改数据库之前,需要先获得相应的锁,获得锁的事务才可以修改数据;在该事务操作期间,这部分的数据是锁定,其他事务如果需要修改数据,需要等待当前事务提交或回滚后释放锁。按照不同的分类方式,锁的种类可以分为以下几种:按锁的粒度划分:表级锁、行级锁、页级锁;按锁的类型划分:共享(锁S锁)、排他锁(X锁);按锁的使用策略划分:乐观锁、悲观锁;5.1、原创 2022-12-15 23:24:55 · 337 阅读 · 0 评论 -
MySql SQL语句的执行过程
2.1、客户端的数据库驱动与数据库连接池:(1)客户端与数据库进行通信前,通过数据库驱动与MySQL建立连接,建立完成之后,就发送SQL语句(2)为了减少频繁创建和销毁连接造成系统性能的下降,通过数据库连接池维护一定数量的连接线程,当需要进行连接时,就直接从连接池中获取,使用完毕之后,再归还给连接池。常见的数据库连接池有 Druid、C3P0、DBCP2.2、MySQL架构的Server层的执行过程:(1)连接器:主要负责跟客户端建立连接、获取权限、维持和管理连接(2)查询缓存:优先在缓存中进行查原创 2022-12-15 23:23:16 · 419 阅读 · 0 评论 -
MySql 事务的ACID与实现原理
数据库的事务是并发控制的基本单位,是指逻辑上的一组操作,要么全部执行,要么全部不执行。4.1、事务的ACID:(1)原子性:事务是一个不可分割的工作单元,事务里的操作要么都成功,要么都失败,如果事务执行失败,则需要进行回滚。(2)隔离性:事务的所操作的数据在提交之前,对其他事务的可见程度。(3)持久性:一旦事务提交,它对数据库中数据的改变就是永久的。(4)一致性:事务不能破坏数据的完整性和业务的一致性。例如在转账时,不管事务成功还是失败,双方钱的总额不变。4.2、ACID的实现原理:原原创 2022-12-15 23:22:04 · 732 阅读 · 0 评论 -
MySql InnoDB与MyISAM的区别
常用的存储引擎?InnoDB与MyISAM的区别?存储引擎是对底层物理数据执行实际操作的组件,为Server服务层提供各种操作数据的API。常用的存储引擎有InnoDB、MyISAM、Memory。这里我们主要介绍InnoDB 与 MyISAM 的区别:(1)事务:MyISAM不支持事务,InnoDB支持事务(2)锁级别:MyISAM只支持表级锁,InnoDB支持行级锁和表级锁,默认使用行级锁,但是行锁只有通过索引查询数据才会使用,否则将使用表锁。行级锁在每次获取锁和释放锁的操作需要消耗比表锁更多原创 2022-12-15 23:20:33 · 1196 阅读 · 0 评论 -
MySql 数据库的常用范式
数据库的常用范式:第一范式(1NF):指表的列不可再分,数据库中表的每一列都是不可分割的基本数据项,同一列中不能有多个值;第二范式(2NF):在 1NF 的基础上,还包含两部分的内容:一是表必须有一个主键;二是表中非主键列必须完全依赖于主键,不能只依赖于主键的一部分;第三范式(3NF):在 2NF 的基础上,消除非主键列对主键的传递依赖,非主键列必须直接依赖于主键。BC范式(BCNF):在 3NF 的基础上,消除主属性对于码部分的传递依赖...原创 2022-12-15 23:17:49 · 449 阅读 · 0 评论 -
MySql 聚簇索引和非聚簇索引的区别
mysql索引原创 2022-12-11 21:56:19 · 190 阅读 · 0 评论 -
MySql 如何优化大表
MySql原创 2022-12-07 10:05:35 · 295 阅读 · 0 评论 -
Redis实现分布式锁
Redis实现分布式锁原创 2022-09-22 14:23:40 · 299 阅读 · 0 评论 -
Redisson与分布式锁
Redisson与分布式锁原创 2022-09-22 11:26:32 · 421 阅读 · 0 评论 -
Elasticsearch去重查询
Elasticsearch去重查询原创 2022-07-30 11:55:09 · 638 阅读 · 0 评论 -
Elasticsearch查询按需返回指定字段
Elasticsearch查询按需返回指定字段原创 2022-07-30 11:20:03 · 3163 阅读 · 0 评论 -
ElasticSearch批量(mget)查询
一、批量(mget)查询1.1 不同索引POST 'http://localhost:9200/_mget?pretty/'{ "docs": [{ "_index": "index1", "_type": "type1", "_id": "1" }, { "_index": "index2", "_type": "type2", "_id": "3" }]}1.2 相同索引原创 2022-03-24 10:35:54 · 3288 阅读 · 0 评论 -
Elasticsearch分析
当在搜索操作期间处理查询时,任何索引中的内容由分析模块分析。该模块由分析器,分词器,分词器过滤器和字符过滤器组成。 如果没有定义分析器,则默认情况下注册内置的分析器,分词器,分词器过滤器和字符过滤器到分析模块。例如POST `http://localhost:9200/index_1`# 请求参数{ "settings": { "analysis": { "analyzer": { "index_analyzer": { .原创 2022-02-15 11:35:48 · 865 阅读 · 0 评论 -
Elasticsearch映射(mapping)
一、mappings#映射是存储在索引中的文档的大纲它定义数据类型,如point或文档和规则中存在的字段的字符串和格式,以控制动态添加的字段的映射。 例如,POST http://localhost:9200/bankaccountdetails请求正文{ "mappings":{ "report":{ "_all":{ "enabled":true }, "properties":{原创 2022-02-14 16:42:29 · 825 阅读 · 0 评论 -
ElasticSearch集群API
一、获取节点信息# 需要指定节点名称,地址或_localGET `http://localhost:9200/_nodes/_local`# 或者GET `http://localhost:9200/_nodes/127.0.0.1`# 响应{ "cluster_name":"elasticsearch", "nodes":{ "Vy3KxqcHQdm4cIM22U1ewA":{ "name":"Red Guardian", "transport_原创 2022-02-14 16:11:29 · 801 阅读 · 0 评论 -
ElasticSearch操作数据(Document)
一、添加数据# /[index]/[type]/[id]# 默认type为_doc,id为no1PUT 'http://localhost:9200/index1/_doc/no1'{ "user":"123", "title":"123", "desc":"123"}四、查询数据GET 'http://localhost:9200/index1/_doc/no1'# 结果{ "_index" : "accounts", "_type" : "person", "_原创 2022-02-10 09:53:29 · 867 阅读 · 0 评论 -
ElasticSearch操作Index
一、创建Index同时设置mapping\settingsPUT 'localhost:9200/index1'{ "settings": { "number_of_shards": 6, "number_of_replicas": 1, "refresh_interval": "10s", "translog":{ "flush_threshold_size":"1gb", "sync_interval":"30s", "dur原创 2022-02-09 18:10:05 · 1461 阅读 · 0 评论 -
ElasticSearch内容聚合
ElasticSearch安装原创 2022-02-09 15:54:05 · 945 阅读 · 0 评论 -
ElasticSearch基本概念
一、IndexElastic 数据管理的顶层单位就叫做 Index(索引)。它是单个数据库的同义词。每个 Index (即数据库)的名字必须是小写。2.1 创建Index# 可以直接向 Elastic 服务器发出 PUT 请求。# 下面的例子是新建一个名叫 weather 的 Index。curl -X PUT 'localhost:9200/weather'2.2 删除索引# 下面的例子是删除一个名叫 weather 的 Index。curl -X DELETE 'localhost原创 2022-02-09 15:53:25 · 308 阅读 · 0 评论 -
ElasticSearch安装
一、windows安装EasticSearch点击跳转到下载地址下载后直接解压即可,进入bin目录,G:\myProgram\ElasticSearch\elasticsearch-6.3.2\bin 下进入cmd -->elasticsearch(注意: 需要提前配置好JAVA环境)在浏览器中输入 http://localhost:9200 看到如下所示图片即为成功二、Linux下安装ElasticSearch# 下载并解压wget https://artifacts.ela原创 2022-02-09 11:59:52 · 738 阅读 · 0 评论 -
MySql将一个表中的某些字段更新到另一个表中(多表联合更新)
公司做的业务有个需求是将A表中的某些字段数据,更新到B表中的相应含义的字段中。假设A、B表的字段如下:A表userIdusernamephone1皮皮156235xxxx2李柯156235xxxx3王杰156234xxxx4柳梦156244xxxxB表userIdusernamescorecoursephone180语文185数学352语文267数学.原创 2021-10-21 11:14:21 · 10009 阅读 · 1 评论 -
MySql 使用游标把查询出转化为json字符串
表 (key_value) 结构key_idkey_namekey_value1username1231age18定义函数,转化查询结果为JSON格式# 重新定义结束符号DELIMITER $$DROP FUNCTION IF EXISTS getJson $$create function getJson (key_id varchar(10)) returns varchar(1000)begin # 定义参数 declare str .原创 2021-07-05 17:41:15 · 430 阅读 · 0 评论 -
Mysql错误: ERROR 1205: Lock wait timeout exceeded解决办法
一、解决办法1、执行mysql命令: show full processlist;2、 然后找出查询语句的系统id:kill掉被锁住的线程id3、查看事物表: select * from information_schema.innodb_trx;原创 2021-03-03 21:31:07 · 2379 阅读 · 0 评论 -
MySql设置服务器接受的数据包大小
一、查看当前值# 先登录mysql执行,单位为字节,1M=1*1024*1024show VARIABLES like '%max_allowed_packet%';1: 方式一可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。max_allowed_packet = 20M如果找不到my.cnf可以通过mysql --help | grep my.cnf去寻找my.cnf文件。重启mysqlservice m原创 2021-03-03 21:27:08 · 1082 阅读 · 0 评论 -
MySql去重复数据
一、使用distinctdistinct cloumn1, cloumn2 这样的mysql 会认为要过滤掉name和id两个字段都重复的记录;如果sql这样写:select cloumn1, distinct cloumn2 from tablename,这样mysql会报错,因为distinct必须放在要查询字段的开头select distinct cloumn1, cloumn2 from tablename;二、使用group byselect id,name from user g原创 2021-03-03 21:26:24 · 200 阅读 · 0 评论 -
Linux中执行MySql脚本
1、连接到MySQL数据库 mysql -h127.0.0.1 -uroot -p tableName2、执行sqlsource /user/local/test.sql原创 2021-03-03 21:24:16 · 2128 阅读 · 0 评论 -
Redis 简介
一、redis是什么redis是一个高性能的key-value数据库,它是完全开源免费的,而且redis是一个NOSQL类型数据库,是为了解决高并发、高扩展,大数据存储等一系列的问题而产生的数据库解决方案,是一个非关系型的数据库。但是,它也是不能替代关系型数据库,只能作为特定环境下的扩充。redis是一个以key-value存储的数据库结构型服务器,它支持的数据结构类型包括:字符串(St...原创 2019-11-28 14:33:11 · 3387 阅读 · 0 评论 -
mysql查找两个条件之间的数据
一、查询两个时间之间的结果SELECT * FROM table_nameWHERE date_time BETWEEN '2015-10-01' and '2015-10-31';原创 2019-07-04 16:37:02 · 3251 阅读 · 0 评论 -
查看mysql的安装目录
一、查看mysql的安装目录1.1 查询命令SHOW VARIABLES LIKE "%char%";1.1 结果+--------------------------------------+----------------------------+| Variable_name | Value ...原创 2019-07-04 16:32:43 · 5928 阅读 · 0 评论