首页
分类
后端开发
数据库
前端开发
学习笔记
错误合集
标签
Java
MySQL
MongoDB
Linux
IDEA
归档
海尔经典面试题
Linux清理磁盘空间
MySQL查询结果输出到文件
MongoDB数据处理
瞬间
留言板
友情链接
Java学习笔记
Java博客
累计撰写
66
篇文章
累计创建
22
个标签
累计收到
12
条评论
栏目
首页
分类
后端开发
数据库
前端开发
学习笔记
错误合集
标签
Java
MySQL
MongoDB
Linux
IDEA
归档
海尔经典面试题
Linux清理磁盘空间
MySQL查询结果输出到文件
MongoDB数据处理
瞬间
留言板
友情链接
Java学习笔记
目 录
CONTENT
以下是
数据库
相关的文章
2026-01-23
千万级数据表COUNT查询优化实战
本文记录了一次SQL慢查询优化实战,从8秒降至0.1秒。初始查询因优化器选错索引导致大量数据扫描。通过创建覆盖索引(含`rating_type`、`areacode`、`id`),避免回表操作,性能提升80倍。进一步通过`ANALYZE TABLE`更新统计信息,使优化器自动选择最优索引。对比`count(*)`与`count(id)`,前者因MySQL优化机制通常更快。生产环境应避免强制索引,依靠统计信息让优化器智能选择。最终推荐方案为创建覆盖索引、更新统计信息、使用`count(*)`,并辅以定期维护与监控。优化核心在于理解执行计划、数据分布及查询模式,而非简单加索引。
2026-01-23
13
0
0
学习笔记
数据库
2025-09-25
Hive数据导入到Doris
本文系统介绍了将Hive数据导入Apache Doris的两种主流方式:Catalog方式和Broker Load方式。Catalog方式通过虚拟化访问Hive元数据,支持实时查询、节省存储,适用于小数据量和需数据一致性的场景,但存在性能和兼容性问题,需通过权限配置、元数据刷新和类型映射优化。Broker Load采用异步导入,通过Broker进程从HDFS高效迁移数据,适合TB级大数据量导入,支持多种格式、高并行度和错误重试机制,需正确配置Broker服务、权限和存储空间。文章还对比了Doris新旧版本功能差异,提出根据数据量、实时性需求选择合适方案的最佳实践,并强调监控、元数据维护和性能优化的重要性。最终,读者可依据业务需求选择最优方案,实现Hive与Doris间高效、可靠的数据流转。
2025-09-25
25
0
1
学习笔记
建站系统
数据库
2024-09-09
SpringBoot多数据源集成——MongoDB
本文介绍了在Spring Boot项目中实现根据业务条件动态切换MongoDB数据源的完整方案。首先通过`spring-boot-starter-data-mongodb`引入依赖,并在配置文件中定义多个数据库(如`default`和`csfa`)。通过`MongoParamsConfig`读取配置,`MongoConfig`类创建多个`MongoTemplate`实例,支持用户名密码认证。为避免保存`_class`字段,扩展了`MappingMongoConverter`。动态切换数据源可通过手动设置`ThreadLocal`标识,结合`DynamicMongoTemplate`选择对应模板;或通过AOP切面自动切换,实现无侵入式数据源切换。针对`MongoRepository`的自定义方法无法通过AOP生效的问题,提出了两种解决方案:一是直接使用`MongoTemplate`;二是创建自定义接口及实现类,继承`MongoRepository`,实现动态数据源调用。该方案适用于需多库动态查询的复杂业务场景,兼顾灵活性与可维护性。
2024-09-09
76
0
7
后端开发
数据库
2024-08-31
SpringBoot多数据源集成——MySQL
本文介绍了在Spring Boot项目中实现基于条件动态切换MySQL数据库的完整方案。通过配置多个数据源(如default、csfa),并使用`AbstractRoutingDataSource`结合`ThreadLocal`实现数据源动态路由。配置包括Maven依赖、`application.yml`中多数据源定义、`DataSourceConfig`类中通过`@ConfigurationProperties`加载数据源并构建`DynamicDataSource`。为避免循环依赖,需添加`@Lazy`注解,为指定默认数据源需使用`@Primary`。提供三种切换方式:手动切换、注解+AOP自动切换、拦截器自动切换。注解方式支持类/方法级别指定数据源,AOP切面需注意执行顺序(`@Order(-1)`)并处理事务嵌套问题。拦截器可从请求头获取`bus-tab`动态设置数据源,实现无侵入式切换。三种方式可组合使用,灵活满足不同场景需求。此外,也提及可使用Apache ShardingSphere实现更高级的动态数据源管理。
2024-08-31
29
0
3
后端开发
数据库
2024-04-19
MongoDB进阶连表查询
本文展示了一个MongoDB聚合查询脚本及其对应的Spring Mongo Java实现。查询目标是从`collect.template`集合中根据指定的`_id`筛选出模板数据,通过`$lookup`关联`collect.template.group`表获取模板对应分组信息,并提取`groupId`组成数组。接着再次关联`collect.group.field`表,根据`groupId`查询字段信息,并筛选出`unit`为“万元”的数据。最终通过`$project`和`$map`格式化输出,仅保留模板名称、分组ID及字段的标题、编码和分组ID。Java代码中使用Spring Data Mongo的Aggregation构建相同逻辑,通过自定义`AggregationOperation`实现复杂投影和过滤操作,最终返回结构化的结果列表。
2024-04-19
44
0
0
数据库
学习笔记
2022-12-26
MongoDB数据处理
MongoDB 提供了两套数据管理工具:`mongodump`/`mongorestore` 用于整库备份与恢复,`mongoexport`/`mongoimport` 用于数据集的导出与导入。其中,`mongoexport` 可将集合导出为 JSON 或 CSV 格式,并支持指定字段和查询条件;`mongoimport` 则可将 JSON/CSV 文件导入数据库,支持字段映射和 CSV 头部行识别。备份时,`mongodump` 指定主机、数据库和输出目录,生成二进制备份文件;恢复时,`mongorestore` 指定主机、数据库和备份目录,可选择是否覆盖现有数据。对于认证数据库,需添加用户名、密码和认证数据库参数。这些工具适用于不同场景的数据迁移、备份与恢复操作。
2022-12-26
108
0
6
数据库
开发工具
2022-12-15
MySQL实用查询
本文提供了三个SQL查询语句,用于统计评分数据的不同维度。第一部分查询评分在不同分段(如90-100、85-89等)的记录总数,并单独统计未评分(rating_status=0)的记录,便于分析评分分布情况。第二部分统计最近七天内所有记录的总数,通过DATE_SUB函数计算日期范围,确保数据时效性。第三部分进一步细化,按天分组统计最近七天每天的记录数量,使用DATE_FORMAT对日期格式化并按天聚合,便于观察每日数据趋势。整体实现逻辑清晰,适用于数据监控与报表生成场景。
2022-12-15
37
0
0
数据库
2022-12-09
造了一个 Redis 分布锁的轮子,没想到还学到这么多东西!!!
本文围绕MySQL可重复读隔离级别下的数据一致性问题及Redis分布式锁的实现展开。首先,通过实际案例说明了在可重复读模式下,事务快照读可能导致Java层余额校验失效,进而引发余额为负的异常情况,强调了在更新时加条件判断(如`balance>0`)的必要性。接着,文章转向Redis分布式锁实现,介绍了使用`SET NX EX`命令原子加锁、用Lua脚本+`DEL`实现安全解锁,避免错解锁问题。通过`EVAL`和`EVALSHA`优化脚本执行效率,并结合Spring Boot实现锁操作。最后,指出了Redis分布式锁存在的缺陷:无法重入、锁超时释放、主从同步导致锁失效,建议通过守护线程延长锁时间或采用RedLock算法提升可靠性,同时预告下篇将详解可重入分布式锁。
2022-12-09
57
0
0
学习笔记
数据库
2022-12-09
MySQL可重复读,一个 P0 事故!!!
本文讲述了一起因数据库从Oracle切换至MySQL后引发的“余额多扣”生产事故。原系统在Oracle下运行正常,但在MySQL默认RR隔离级别下,由于MVCC(多版本并发控制)机制导致并发事务读取旧版本数据,出现余额不足仍被扣款的问题。核心原因在于:事务2在t5时刻使用“当前读”获取最新数据(1,900),但因事务1尚未提交,该版本对事务2不可见;事务2只能回溯至上一版本(1,1000),导致错误判断余额充足并执行扣款。在RC隔离级别下,事务2每次查询重新生成一致性视图,能读取已提交的最新数据,避免了问题。本文深入解析了MySQL MVCC、一致性视图、快照读与当前读机制,揭示了在高并发场景下数据库隔离级别与数据一致性的重要关系,强调在数据库迁移或系统重构时需充分考虑并发控制行为的差异。
2022-12-09
33
0
0
数据库
错误合集
2022-12-09
MongoDB更新修改内嵌文档操作
本文介绍了MongoDB中嵌套数据结构的更新操作。首先,通过`$`定位操作符实现对嵌套数组中特定元素的精准修改,如将“MongoDB专业指北”改为“MongoDB不专业指北”,适用于数组或对象数组场景。其次,使用`.`属性访问符更新下级文档属性,例如修改“scores.praise”的值,或结合`$`操作符更新嵌套数组中的元素。此外,文章还介绍了属性的增删操作:使用`$push`添加数组元素、`$addToSet`防止重复插入、`$pull`移除匹配元素、`$pop`删除数组首尾元素。通过这些操作符,可高效管理复杂嵌套结构数据,实现灵活的数据更新。
2022-12-09
17
0
0
数据库
2022-12-09
MongoDB使用全文检索
本文介绍了MongoDB的全文检索功能,旨在弥补传统关系型数据库(如InnoDB)在模糊查询时索引失效的缺陷。MongoDB自2.4版本起支持全文检索,支持15种语言,2.6版本后默认启用。可通过`db.adminCommand`或启动参数开启该功能。用户可对文本字段(如`post_text`)创建全文索引,使用`$text`操作符进行高效关键词搜索,如`db.posts.find({$text:{$search:"runoob"}})`。全文索引性能优于正则表达式,因后者需全表扫描。但全文索引存在限制:每次查询仅允许一个`$text`操作,不能用于`$nor`查询,且查询中使用`$text`时`hint`失效。整体上,MongoDB全文检索是实现高效模糊查询的有效方案。
2022-12-09
25
2
1
数据库
2022-12-07
MySQL查询结果输出到文件
本文介绍了MySQL数据导出的多种方式。**方式一**:在MySQL命令行中使用`SELECT ... INTO OUTFILE`语句将查询结果导出为`.txt`、`.csv`等格式文件,需注意权限问题、文件名唯一性及编码设置(如`CHARACTER SET gbk`),避免中文乱码;大数值数据建议导出为文本格式后再导入Excel。**方式二**:通过Shell命令`mysql -e`直接执行SQL查询并重定向输出,无需进入MySQL环境,支持指定编码和数据库名,适合自动化脚本使用。**扩展**:使用`mysqldump`可导出整库或单表,配合`mysql`命令或`source`导入SQL文件。**特别提醒**:导出CSV时,`NULL`值需手动处理,避免导入时字段类型错误。
2022-12-07
65
0
0
数据库
1
2
鄂ICP备20003961号-3