
DB
文章平均质量分 68
数据(Mysql、sqlserver、oracle、redis、nosql、mongodb 等)相关技术分享,总结
夏子曦
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Redis——内存淘汰策略
Redis的淘汰策略是指当Redis内存使用达到上限时,为了腾出空间给新的数据,Redis会根据预设的策略来删除一些现有的数据。原创 2024-12-04 21:37:39 · 676 阅读 · 0 评论 -
数据库——创建索引的原则
创建索引的原则涉及多个方面,以确保索引的有效性和性能。原创 2024-12-03 11:54:52 · 341 阅读 · 0 评论 -
Redis——主从复制原理
Redis的主从复制原理是其高可用性和分布式读取能力的重要基础。原创 2024-12-02 10:14:04 · 751 阅读 · 0 评论 -
MySQL的锁机制
MySQL的锁机制是为了确保数据库事务的ACID属性(原子性、一致性、隔离性、持久性)以及并发控制和数据完整性而设计的。原创 2024-11-30 09:27:56 · 853 阅读 · 0 评论 -
数据库——InnoDB实现事务的原理和流程
InnoDB是MySQL的默认存储引擎,它支持事务,并提供了一系列的机制来保证事务的ACID(原子性、一致性、隔离性、持久性)属性。原创 2024-11-29 21:04:30 · 1255 阅读 · 0 评论 -
数据库——索引覆盖(Covering Index)
索引覆盖(Covering Index)是指一个查询语句在执行时,。也就是说,查询语句所需的列都包含在了创建的索引中,因此可以直接从索引中获取数据,而无需再去查询实际的数据行。原创 2024-11-29 20:24:47 · 614 阅读 · 0 评论 -
Redis和MySQL保持一致性的延迟双删(Delay Double Delete)策略
Redis和MySQL保持一致性的延迟双删(Delay Double Delete)策略,是一种在数据更新或删除时为了保证数据一致性而采取的方法。原创 2024-11-29 20:14:48 · 1049 阅读 · 0 评论 -
用com.github.shyiko.mysql.binlog 写一个监听mysql的binlog 的程序
使用 com.github.shyiko.mysql-binlog-connector-java 库来监听 MySQL 的 binlog(二进制日志)是一个常见的做法,特别是在需要实时数据同步或变更数据捕获(CDC)的场景中。以下是一个简单的 Java 程序示例,它使用 mysql-binlog-connector-java 来监听 MySQL 的 binlog 事件。首先,确保你已经将 mysql-binlog-connector-java 库的依赖添加到了你的项目中。类型的事件,即插入或更新操作。原创 2024-11-14 10:33:08 · 1072 阅读 · 0 评论 -
spring 框架中的事务隔离级别
比如,一个事务正在对一条记录做修改,在这个事务完成并提交之前,这条数据是处于待定状态的(可能提交也可能回滚),这时,第二个事务来读取这条没有提交的数据,并据此做进一步的处理,就会产生未提交的数据依赖关系。幻读和不可重复读都是读取了另一条已经提交的事务(这点就脏读不同),所不同的是不可重复读查询的都是同一个数据项,而幻读针对的是一批数据整体(比如数据的个数)。例如事务T1在读取某一数据,而事务T2立马修改了这个数据并且提交事务给数据库,事务T1再次读取该数据就得到了不同的结果,发生了不可重复读。原创 2024-10-31 16:22:40 · 1150 阅读 · 0 评论 -
Sql执行较慢的排查方式
SQL执行较慢的排查方式涉及多个方面,包括检查SQL语句本身、数据库配置、硬件资源等。原创 2024-10-24 15:47:42 · 1533 阅读 · 0 评论 -
MongoDB用于判断数组是否为空的语句。
方法一:{"field1.0":{$exists: true}}(推荐)db.testcollection.find({"field1.0":{$exists: true}})方法二:$elemMatch:{$ne:null}db.testcollection.find({"field1":{$elemMatch:{$ne:null}}})方法三:$where:"this.field1.length>0"db.testcollection.find({$where:"th..原创 2021-11-23 11:32:18 · 2625 阅读 · 0 评论 -
MySQL主从复制原理
MySQL主从复制是一种异步、基于日志的、单向的数据库复制技术,它通过在主服务器上启用二进制日志(binlog)并将其发送给一个或多个从服务器,实现了从服务器与主服务器之间的数据同步。原创 2024-11-10 13:17:38 · 817 阅读 · 0 评论 -
SQL中LIKE查询是否使用索引
在这个查询中,last_name LIKE '%mit%'通常不会使用索引,因为数据库系统无法直接利用索引定位包含'mit'的值,需要进行全表扫描。在这个查询中,last_name LIKE 'Sm%'可以使用索引,因为数据库系统可以利用索引快速定位以'Sm'开头的值。在这个查询中,last_name LIKE 'Smith'等同于last_name = 'Smith',索引会被使用。在这个查询中,如果数据库支持后缀索引,last_name LIKE '%ith'可以使用索引。转载 2024-10-30 20:17:01 · 265 阅读 · 0 评论 -
列式数据库
列式数据库与传统的关系型数据库在数据存储方式、查询性能、数据压缩率等多个方面存在明显的区别,并各自具有独特的优点。原创 2024-10-29 14:18:04 · 788 阅读 · 0 评论 -
数据同步到Elasticsearch方案
在实际项目开发中,我们经常将 MySQL 作为业务数据库,ES 作为查询数据库,用来实现读写分离,缓解 MySQL 数据库的查询压力,应对海量数据的复杂查询。这其中有一个很重要的问题,就是如何实现 MySQL 数据库和 ES 的数据同步,今天和大家聊聊 MySQL 和 ES 数据同步的各种方案。我们先看看下面 4 种常用的数据同步方案。原创 2024-11-18 09:54:20 · 1278 阅读 · 0 评论 -
Oracle 开窗函数
在 Oracle 数据库中,开窗函数(Window Functions)是一类非常强大的 SQL 函数,用于在结果集的“窗口”上执行计算。这些窗口函数允许你在查询的每一行上执行聚合操作(如求和、平均、计数等),同时保留原始行的详细数据。原创 2024-10-31 15:29:52 · 1761 阅读 · 0 评论 -
k8s搭建双主的mysql8集群---无坑
通过搭建一主三从,我们能理解到主节点只有1个,那么承担增删改主要还是主节点,如果你在从节点上去操作增删改操作,数据不会同步到其他节点。本章我们将实现多主(双主)集群。实现在多个节点上操作增删改,能同步其他节点。原创 2024-09-28 11:47:19 · 2415 阅读 · 2 评论 -
平衡树 BTree和B+Tree
B+树索引是B+树在中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的演化而来的。在讲B+树之前必须先了解二叉查找树、平衡二叉树(AVLTree)和平衡多路查找树(B-Tree),B+树即由这些树逐步优化而来。具有以下性质:左子树的键值小于根的键值,右子树的键值大于根的键值。如下图所示就是一棵二叉查找树,原创 2024-10-10 08:46:35 · 1090 阅读 · 0 评论 -
java.sql.SQLSyntaxErrorException: ORA-00972: 标识符过长
select * from table_test t where t.id=e18bdc3d29ab49cd946b9aa4288d73d3请把字符串用单引号 括起来select * from table_test t where t.id='e18bdc3d29ab49cd946b9aa4288d73d3'如果是ibatis的框架请注意$与#的区别比如xml 里面是${id},改为#{id}...原创 2021-11-24 14:58:43 · 2590 阅读 · 0 评论 -
docker-compose 部署PostgreSQL容器 yml
version: "3.6"services: #服务 postgres: image: postgres:9.6.22 #指定镜像名称 container_name: postgres-9.6.22 #容器名称 ports: #端口映射 - "5432:5432" # - "8080:8080" restart: always environment: - POSTGRES_PASSWORD=xxx volumes.原创 2021-06-23 13:37:07 · 1487 阅读 · 0 评论 -
.net core EF 连接 PostgreSQL
EF 所需的Content public class PostgreSQLContent : DbContext { public PostgreSQLContent(DbContextOptions<PostgreSQLContent> options) : base(options) { } public DbSet<TestTable> TestTable { get; set; }原创 2021-06-23 11:57:05 · 1516 阅读 · 0 评论 -
Oracle连接字符串总结
Oracle XE 标准连接 Oracle XE(或者"Oracle Database 10g Express Edition")是一个简单免费发布的版本。以下是语法格式: Driver=(Oracle in XEClient);dbq=111.21.31.99:1521/XE;Uid=myUsername;Pwd=myPassword; ODBC新版本连接方式以下是语法格式: Driver={Microsoft ODBC for...原创 2021-05-11 16:12:20 · 1921 阅读 · 0 评论 -
数据库管理工具DBeaver
git(开源)地址:https://github.com/dbeaver/dbeaver官方地址:企业版https://dbeaver.com/ 社区版https://dbeaver.io/建议下载并安装企业版,社区版对非结构化的数据库(比如MongoDB,Redis等)不支持。企业版的LICENSE 可以在网上找一个(我用的是dbeaver-agent),Windows上的安装一路默认执行就行,企业版破解 方式如下使用方法: 0. 先安装DBeaverEE。 1. 先下...原创 2021-02-22 10:26:57 · 2708 阅读 · 1 评论 -
mybatis generator的数据库不同实例有相同表名问题处理方案
今天改动了系统中的一张表的设计,在car表中增加了几个新字段。重新生成底层ORM代码,发现Mapping.xml中存在两个id为BaseResultMap 的 resultMap 标签。仔细一看,原来有两张表的名字都是car,下面这个sql只能查到当前数据库实例的表(user_tables表)select t.* from user_tables t where t.TABLE_NAME = 'CAR';结果只有一条数据在all_tables这张表中,你可以看到所有实例的表,相同.原创 2021-02-02 09:42:43 · 963 阅读 · 0 评论 -
asp.net core系列 30 EF管理数据库架构--必备知识 迁移
一.管理数据库架构概述EF Core 提供两种主要方法来保持 EF Core 模型和数据库架构同步。一是以 EF Core 模型为基准,二是以数据库为基准。(1)如果希望以 EF Core 模型为准,请使用迁移。 对 EF Core 模型进行更改时,此方法会以增量方式将相应架构更改应用到数据库,以使数据库保持与 EF Core 模型兼容。(2)如果希望以数据库架构为准,请使用反向工程。 使用此方法,可通过将数据库架构反向工程到 EF Core 模型来生成相应的 DbContext 和实体类型。1原创 2021-01-28 09:59:05 · 293 阅读 · 0 评论 -
mongodb 多字段分组,条件过滤,最大,最小,求和,总条数
db.T_ZhengCheData.aggregate([ {$match: {"AccumulativeMileage":{$gt:0,$lte:1000000},"ZhengCheUpdateTime":{$gte:ISODate("2020-10-01T00:00:00.000+08:00"),$lte:ISODate("2020-12-31T23:59:59.000+08:00") }}}, {$project : {Vin:"$Vin", Accumu...原创 2021-01-25 11:44:05 · 1870 阅读 · 0 评论 -
sql搜索下划线(_),like中不能匹配下划线(_)
使用like语句的错误查询select * from t where x like '%_%';select * from t where x like '%\_%';返回全部的记录,不是想要的结果!为什么错误?因为在like语句中的下划线的含义是“任意一个字符”,类似“%”代表匹配任意多个字符的。正确的查询方法能想到的有如下两种方法。1)第一种方法使用escape转义select * from t where x like '%\_%' escape '\';.原创 2020-08-13 11:16:13 · 5736 阅读 · 0 评论 -
不适合将数据库部署在Docker容器内的七大原因
1、数据安全问题不要将数据储存在容器中,这也是 Docker 官方容器使用技巧中的一条。容器随时可以停止、或者删除。当容器被rm掉,容器里的数据将会丢失。为了避免数据丢失,用户可以使用数据卷挂载来存储数据。但是容器的 Volumes 设计是围绕 Union FS 镜像层提供持久存储,数据安全缺乏保证。如果容器突然崩溃,数据库未正常关闭,可能会损坏数据。另外,容器里共享数据卷组,对物理机硬件损伤也比较大。即使你要把 Docker 数据放在主机来存储 ,它依然不能保证不丢数据。Docker volumes原创 2020-08-10 09:01:20 · 636 阅读 · 0 评论 -
Mysql:数据库引擎
废话不多说,我们先看MySql 用到了那些引擎SHOW ENGINES直接可以看到有下面这些引擎 InnoDB,MRG_MYISAM,MEMORY,BLACKHOLE,MyISAM,CSV,ARCHIVE,PERFORMANCE_SCHEMA,FEDERATED那么每个引擎对应的有什么用呢?他们之间的关系又是怎样的呢?InnoDBInnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,InnoDB是默认的MySQL引擎。InnoDB主要特性有:.原创 2021-01-28 09:54:50 · 406 阅读 · 0 评论 -
oracle 数据库 去重(删除只留一条数据)
思路第一步:查询出重复数据,并标明行号select t.*,row_number() over(partition by t.ordercode,t.mobilephone,t.platenumber,t.ordercreatedate,t.amount,t.ordernum order by t.pid)su from three_order t第二步:筛选出行号大于1select tt.*from (select t.*,row_number() over(partition by原创 2020-05-13 17:41:44 · 1390 阅读 · 0 评论 -
oracle Union 中 ORA-12704:字符集不匹配问题的解决 .to_char() or N
在使用Union all连接时,若A集合中某列为nvarchar2或nvarchar类型,而B集合中无此列,用‘ ’ 来代替是会报字符集不匹配,解决方法有两种,见下面的示例例:select '中国','China',cast('中国' as nvarchar2(10)) Tfrom dualunion allselect '美国','USA','' from dual;如上,T的类型为nvarchar2,长度为10,如果直接这样查询,就会报字符集不匹配,那么怎么来处理呢,可通过两种方原创 2020-05-10 13:17:14 · 968 阅读 · 0 评论 -
oracle 锁表相关处理
--kill session语句alter system kill session'50,492';--以下几个为相关表SELECT * FROM v$lock;SELECT * FROM v$sqlarea;SELECT * FROM v$session;SELECT * FROM v$process ; SELECT * FROM v$locked_obje...原创 2020-04-28 17:27:25 · 170 阅读 · 0 评论 -
Oracle 数组(定长)
declare type t_test is varray(5) of varchar2(9); test t_test := t_test('a', 'b', 'c', 'd', 'e');begin --遍历 for i in 1 .. test.count loop dbms_output.put_line(test(i)); end loop;end...原创 2020-04-28 17:21:46 · 295 阅读 · 0 评论 -
ORA-20000:ORU-10027:buffer overflow,limit of 10000 bytes 解决方法(增大缓冲区,设置缓冲区不受限制)
今天,开发存储过程时,执行dbms_output.putline(变量)的时候,报ORA-20000:ORU-10027:buffer overflow,limit of 10000 bytes.如下图所示:问题原因:缓冲区是10000位,打印的字符超出了限制。解决方法1增大缓冲区SQL>set serveroutput on size 1...原创 2020-04-28 17:20:28 · 2067 阅读 · 0 评论 -
oracle 分割字符串(存储过程处理)
第一种:oracle字符串分割和提取分割create or replace function Get_StrArrayLength( av_str varchar2, --要分割的字符串 av_split varchar2 --分隔符号)return numberis lv_str varchar2(1000); lv_length number;...原创 2020-04-28 17:18:49 · 1949 阅读 · 0 评论 -
mongodb 数据修改 db.collection.update,multi,upsert
mongodb 修改语法db.collection.update( <query>, <update>, { upsert: <boolean>, multi: <boolean>, writeConcern: <document> })参数说明:query: ...原创 2020-04-23 14:10:09 · 3271 阅读 · 0 评论 -
oracle plsql 表中字段&注释时为乱码 解决方式
一种:列名注释 出现???乱码二种:查询出来的数据有乱码解决方式加个环境变量在windows中创 建一个名为“NLS_LANG”的系统环境变量,设置其值为“SIMPLIFIED CHINESE_CHINA.ZHS16GBK”,然后重新启动 pl/sql developer,这样检索出来的中文内容就不会是乱码了。如果想转换为UTF8字符集,可以赋予“NLS_LANG”...原创 2020-04-21 11:11:43 · 10426 阅读 · 0 评论 -
EFCore sql 中双引号相关问题
1:PL/SQL 中 单、双引号作用 单引号:单引号是字符串分隔符,用于定义字符串字面值 双引号:双引号是引用标识符分隔符,可用它来访问从数据库目录以区分大小写的方式创建的表,如果你是以区分大小写的方式创建数据库表,这个是必需的。双引号还能引注引住关键字。2:EF core 中 SQL 带有双引号处理方式遇到的问题抓日志得到执行报错:2020...原创 2020-03-22 08:07:47 · 1488 阅读 · 0 评论