数据库
文章平均质量分 85
数据库相关知识分享
程序员的开发手册
公众号:程序员的开发手册
展开
-
MySQL(MariaDB)中的B+树与死锁问题,真的只是面试官为了难为我们吗?
作为刚入职场的程序员,很多朋友都会在面试时被问到 MySQL 的 InnoDB 引擎采用什么索引类型。大多数人知道答案是 B+ 树,但有些面试官可能会更深入地问到死锁问题。这些问题是否只是面试官为了难为我们而设定的呢?是否是公司与我们协商薪酬高低的一个筹码呢?答案是否定的。这些问题不仅仅是考察基础知识,更是为了评估你在实际工作中解决问题的能力。原创 2024-06-10 18:03:46 · 1364 阅读 · 0 评论 -
新手教学系列——在MySQL分表中批量调整表结构的实践与优化
通过本文的实例,我们展示了如何使用MySQL存储过程批量修改分表的表结构。通过存储过程,数据库管理员可以大大减少重复劳动,提高效率,同时也降低了人为操作带来的错误风险。希望本文的内容能够帮助大家在实际项目中灵活应用存储过程,优化数据库操作。关键词:分库分表、存储过程、MySQL、批量操作、索引。原创 2024-09-26 17:50:26 · 1199 阅读 · 0 评论 -
新手教学系列——非正常关机导致MySQL权限表(db)损坏及修复详解
MySQL的权限管理机制对于保护数据库的安全性至关重要。MySQL的权限是通过几个特定的表来管理的,这些表存储在mysql数据库中,其中包括mysql.usermysql.db等。每个表负责管理不同层级的权限设置,比如mysql.user表管理全局权限,而mysql.db表则管理特定数据库的权限。权限表的重要性不言而喻,它决定了哪些用户可以访问数据库以及能进行哪些操作。如果这些表发生损坏,用户将无法正常访问数据库,甚至会导致数据库本身无法启动。原创 2024-09-19 10:11:25 · 1153 阅读 · 0 评论 -
新手教学系列——如何应对业务扩展中的MongoDB升级挑战
在业务发展的早期,MongoDB的单节点配置就能满足大部分需求。然而,随着数据量的增加和业务的不断扩展,单节点已无法应对高并发的读写需求。此时,升级MongoDB成为必要选择,最常见的升级路径是从单节点扩展为副本集,随后再进行分片。本文将结合实际操作,详细讲解如何通过合理规划和设置,顺利完成MongoDB的扩展。原创 2024-09-05 10:22:07 · 1325 阅读 · 0 评论 -
日常避坑指南:如何合理利用Swap优化MongoDB内存管理
合理利用Swap和正确配置,可以在很大程度上改善MongoDB在资源有限环境中的性能表现。通过将部分内存负载转移到Swap,系统可以在内存资源受限的情况下,仍然保持稳定高效的运行。希望本文提供的建议能够帮助开发者在实际应用中,避免因内存不足而引发的系统问题。关注【程序员的开发手册】,让您少走十年弯路。原创 2024-09-03 16:41:45 · 1313 阅读 · 0 评论 -
新手教学系列——Redis分布式锁进阶版:如何实现支持同一个Key多把锁,并带有超时重试功能
分布式锁是用来在多个进程或系统中协调共享资源访问的技术。常见的应用场景包括多个服务实例同时处理任务时防止重复操作、控制任务的并发数量等。通过Redis的SET NX和EX命令,我们可以轻松实现基本的分布式锁。然而,在某些场景下,比如限流或需要对同一个资源分配多个“锁位”的场景,单一的分布式锁功能可能不够用。比如一个任务允许最多两个实例同时执行,这就需要我们对同一个锁Key支持多个锁。接下来,我们将实现一个进阶版的Redis分布式锁,支持多把锁,同时增加锁定失败后的超时重试机制。原创 2024-08-20 17:42:21 · 977 阅读 · 0 评论 -
新手教学系列——使用 Redis 实现任务队列:先进先出和后进先出的选择
任务队列是一种用于管理任务执行顺序的数据结构,常用于异步处理和任务调度。任务队列能够帮助系统按序处理任务,避免并发冲突和资源争抢。根据任务入队和出队顺序的不同,任务队列可以分为先进先出(FIFO)和后进先出(LIFO)。通过 Redis 实现任务队列,我们可以灵活选择先进先出或后进先出的任务调度策略,从而满足不同的业务需求。Redis 的高性能和简单易用使其成为实现任务队列的理想工具。无论是 FIFO 还是 LIFO 队列,都可以帮助我们有效管理任务,提高系统的稳定性和可靠性。关注【程序员的开发手册。原创 2024-08-05 13:29:38 · 529 阅读 · 0 评论 -
新手教学系列——高效管理MongoDB数据:批量插入与更新的实战技巧
在日常开发中,MongoDB作为一种灵活高效的NoSQL数据库,深受开发者喜爱。然而,如何高效地进行数据的批量插入和更新,却常常让人头疼。今天,我们将一起探讨如何使用MongoDB的bulk_write方法,简化我们的数据管理流程,让代码更加简洁高效。通过使用bulk_write,我们不仅能简化代码结构,还能大幅提升批量操作的效率。在实际应用中,特别是面对大量数据时,采用这种方法能有效减少数据库操作的开销,提高系统的整体性能。关注【程序员的开发手册】,让我们一起少走弯路,共同进步!原创 2024-07-12 18:31:07 · 1500 阅读 · 0 评论 -
新手教学系列——MongoDB聚合查询的进阶用法
通过本文的介绍,相信你对MongoDB的聚合查询有了更深入的了解。掌握这些技术,可以让你在处理大数据时更加得心应手。希望本文对你有所帮助。欢迎关注【程序员的开发手册】,让我们一起在编程的道路上少走弯路,更多干货内容敬请期待!原创 2024-07-11 14:02:03 · 1134 阅读 · 0 评论 -
新手教程系列 -- SQLAlchemy对同一张表联表两次
在开发过程中,我们经常会遇到对同一张表进行多次联表查询的需求。比如在查询航线时,我们希望将起飞和降落的机场名称代入结果中。为了实现这一目标,机场名称统一存放在 AirPort 表中。下面,我们将介绍如何通过 SQLAlchemy 实现这一需求。原创 2024-06-28 17:30:12 · 816 阅读 · 0 评论 -
小规模自建 Elasticsearch 的部署及优化
通过以上步骤,我们在三台服务器上成功部署并优化了 Elasticsearch 5.3.0,可以承载1周内约500~800G的数据量,并支持图表指标的查询。对于小规模的应用监控,这样的配置已经足够。确保定期备份数据并监控 Elasticsearch 的性能,以便及时调整配置和扩展系统容量。以上内容基于实际操作和测试,确保配置无误,系统稳定运行。如有特殊需求,请根据具体情况进行调整。原创 2024-06-17 11:58:58 · 1245 阅读 · 0 评论 -
原生 SQLAlchemy 的使用(彻底解决Lost connection to MySQL server)
提到 SQLAlchemy 和 Flask-SQLAlchemy,相信大家都不会感到陌生。Flask-SQLAlchemy 封装后使用起来非常方便。然而,当我们脱离 Flask 使用原生 SQLAlchemy 时,经常会遇到数据库连接丢失(Lost connection to MySQL server)的问题。此类错误即使通过调整数据库的等待时长也无法有效解决,每次都需要重启服务才能重新连接成功。那么如何正确地使用原生 SQLAlchemy 并避免数据库连接丢失的问题呢?本文将详细介绍这一过程。原创 2024-06-12 07:12:47 · 1587 阅读 · 0 评论