MySQL
文章平均质量分 84
d3y1
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
秒杀系统主库宕机不丢单方案-05-Redis预扣+消息队列
Redis预扣+消息队列方案通过在应用层引入Redis缓存和消息队列,实现流量削峰和数据持久化分离。该方案从源头减少对数据库的压力,是秒杀系统主库宕机不丢单的源头减压方案。该方案在超高并发场景下表现优异,能够有效减少数据库压力,提高系统吞吐量。建议结合Redis集群和消息队列的最佳实践,确保系统的稳定性和可靠性。原创 2026-04-01 17:06:15 · 767 阅读 · 0 评论 -
秒杀系统主库宕机不丢单方案-04-全同步组复制MGR
全同步组复制MGR(MySQL Group Replication)方案通过MySQL官方提供的组复制功能,实现多节点间的强一致性。该方案采用多数派确认机制,确保数据在多数节点确认后才提交,是秒杀系统主库宕机不丢单的金融级强一致方案。该方案在数据一致性和系统可用性方面表现最佳,但性能影响较大,适用于对数据一致性要求极高的金融级秒杀场景。建议结合专业DBA团队进行配置和维护。原创 2026-04-01 16:47:24 · 553 阅读 · 0 评论 -
秒杀系统主库宕机不丢单方案-03-本地消息表
本地消息表方案通过在应用层引入消息表机制,将事务操作与消息发送分离,实现最终一致性。该方案是秒杀系统主库宕机不丢单的兜底设计,即使主库故障也能通过补偿机制恢复数据。该方案在最终一致性和系统可用性之间取得了平衡,适用于高并发秒杀场景。建议结合幂等设计和监控机制,确保系统的稳定性和可靠性。原创 2026-04-01 16:40:34 · 523 阅读 · 0 评论 -
秒杀系统主库宕机不丢单方案-02-半同步AFTER_SYNC
半同步复制AFTER_SYNC方案是MySQL 5.7+版本引入的高级复制机制,通过主从节点之间的确认机制确保数据不丢失。该方案在主库提交事务前,等待至少一个从库确认已接收并持久化binlog,是秒杀系统主库宕机不丢单的核心方案。该方案在性能和数据可靠性之间取得了较好的平衡,适用于中大型秒杀系统。建议结合参数优化和多从库配置,形成完整的容灾体系。原创 2026-04-01 16:30:10 · 441 阅读 · 0 评论 -
秒杀系统主库宕机不丢单方案-01-参数硬优化
参数硬优化方案通过调整MySQL数据库的核心参数,牺牲部分性能换取数据持久化的可靠性,是秒杀系统主库宕机不丢单的基础保障方案。该方案主要针对MySQL异步复制下"提交成功"仅表示内存操作完成,主库宕机导致binlog未同步即丢数据的问题根源。在中小型秒杀系统中,该方案具有简单、低成本的优势,但在高并发场景下需要谨慎评估性能影响。建议与其他方案结合使用,形成多层次的容灾体系。原创 2026-04-01 16:25:15 · 369 阅读 · 0 评论 -
MySQL之数据库扩容四种方案
随着业务规模的增长,MySQL数据库的扩容成为系统架构演进的重要环节。本文档详细介绍了四种主流的MySQL扩容方案,涵盖从简单到复杂的各种场景,帮助开发者和架构师根据实际业务需求选择合适的扩容策略。选择建议初创项目:优先考虑停服扩容方案,简单易行成长期应用:采用双写扩容方案,平衡可用性和复杂度成熟电商/金融系统:使用ShardingSphere实现动态扩容大促级系统:双虚IP方案提供最高可用性保障原创 2026-03-28 13:45:57 · 578 阅读 · 0 评论 -
架构之MySQL集群复制模式对比分析
MySQL集群复制是构建高可用、可扩展数据库系统的关键技术。根据业务需求的不同,MySQL提供了多种复制方案,每种方案在一致性、性能和可用性之间有不同的权衡。选择建议对于非核心业务:选择异步复制,追求极致性能对于一般业务:选择半同步AFTER_COMMIT,平衡性能和一致性对于核心业务:选择半同步AFTER_SYNC,优先保证数据安全对于关键业务:选择全同步MGR,确保强一致性和高可用性原创 2026-03-20 11:42:01 · 415 阅读 · 0 评论 -
架构之处理慢SQL与慢接口问题指南
在系统架构设计和运维过程中,慢SQL和慢接口是影响系统性能和用户体验的关键问题。本文档系统性地分析了这些问题的类型、典型场景,并提供实用的解决方案和最佳实践。原创 2026-03-08 15:57:26 · 446 阅读 · 0 评论 -
MySQL之InnoDB单表推荐2000W记录缘由
MySQL InnoDB单表推荐2000W记录的缘由可总结为:性能拐点:B+树高度从3增加到4,查询I/O次数增加内存限制:2000W记录接近常见服务器内存可缓存的极限维护成本:备份、恢复、DDL操作时间可接受架构演进:此时引入分库分表,复杂度和成本可控风险控制:故障恢复时间在可接受范围内原创 2026-02-05 17:19:25 · 1041 阅读 · 0 评论 -
MySQL之Limit深度分页性能问题与优化指南
MySQL Limit 深度分页性能问题的核心在于 MySQL 必须扫描并读取 offset 之前的所有记录。针对不同场景,有多种优化方案:子查询优化:适合主键连续的场景,性能提升显著延迟关联:通用性强,适合各种查询条件游标分页:性能最优,但不支持跳页覆盖索引:减少回表,适合固定查询模式预计算/缓存:适合查询模式固定的场景搜索引擎:适合超大数据量和复杂搜索在实际应用中,应根据具体场景选择合适的方案,并结合索引优化、查询优化和缓存策略,构建高性能的分页系统。原创 2026-02-04 17:03:10 · 1016 阅读 · 0 评论 -
MySQL之SQL语句执行过程详解
MySQL SQL语句的执行过程是一个复杂而精密的流程:连接器:建立连接并验证权限分析器:进行词法分析和语法分析,构建语法树预处理器:检查表/列存在性、验证权限、展开视图优化器:进行逻辑优化和物理优化,生成最优执行计划执行器:根据执行计划调用存储引擎接口执行查询理解这个执行过程对于编写高效的SQL语句、进行性能调优具有重要意义。通过使用EXPLAIN命令分析执行计划,可以更好地理解MySQL如何执行我们的SQL语句,从而进行针对性的优化。原创 2026-02-04 14:59:19 · 1214 阅读 · 0 评论 -
架构之MySQL三种日志
MySQL 使用三种不同的日志来确保数据完整性、支持事务处理和启用复制。每种日志都有特定的用途,并为不同的 ACID 属性做出贡献:Redo Log:确保已提交事务的持久性Undo Log:支持回滚并为 MVCC 提供读一致性Binlog:支持复制和时间点恢复原创 2026-01-25 15:32:04 · 767 阅读 · 0 评论 -
MySQL-17性能监控与调优
MySQL性能监控与调优是数据库管理的核心能力。本文系统性地介绍了从操作系统层到MySQL层的全栈监控体系,包括CPU、内存、IO等关键指标,并提供了实用的监控脚本和SQL查询模板。通过资源指标、数据库指标、查询指标和业务指标的多维度监控,结合Prometheus、Grafana等工具,可构建完整的性能分析体系。文章还提供了详细的系统性能分析脚本和MySQL核心性能指标查询,帮助DBA快速定位数据库性能瓶颈,实现高效调优。原创 2025-10-08 10:31:52 · 864 阅读 · 0 评论 -
MySQL-16备份与恢复机制
MySQL提供了完善的备份恢复机制,包括逻辑备份(mysqldump/mysqlpump)和物理备份(XtraBackup)两种主要方式。逻辑备份生成SQL语句,支持条件备份和并行处理;物理备份直接复制数据文件,支持增量备份和流式传输。两种方式各有优势,逻辑备份灵活但恢复慢,物理备份高效但占用空间大。实际应用中通常结合使用,并配合二进制日志实现点时间恢复(PITR),以构建完整的数据保护方案。原创 2025-10-08 10:29:47 · 1004 阅读 · 0 评论 -
MySQL-15安全机制
MySQL提供了全面的安全机制,包括身份认证、权限管理和数据加密等。其安全架构分为网络安全层、身份认证层、权限管理层和数据安全层,通过SSL/TLS加密、用户账户管理、权限系统和审计日志等实现。认证插件系统支持多种验证方式,权限管理采用层次化结构,从全局到列级别控制访问权限。本文深入分析了MySQL的安全实现机制,包括认证过程源码和最佳实践配置。原创 2025-10-08 10:27:50 · 988 阅读 · 0 评论 -
MySQL-14部署架构及高可用机制
MySQL高可用架构摘要 MySQL提供多种高可用方案确保数据库持续服务。主要包括主从架构、主主架构、集群架构和组复制等模式。传统主从架构通过代理层(如HAProxy)实现读写分离,配合监控系统(Prometheus)实现故障检测和手动切换。MHA方案提供自动故障转移能力,通过Manager节点监控集群并管理虚拟IP切换。InnoDB Cluster整合组复制和MySQL Router,提供完整的高可用解决方案。关键配置包括半同步复制、并行复制、性能优化参数等,同时需结合SSH免密登录、VIP管理和完善监控原创 2025-10-08 10:26:49 · 687 阅读 · 0 评论 -
MySQL-13数据同步机制
MySQL数据同步机制包括主从复制、组复制等多种模式。主从复制基于Binlog实现,包含Master和Slave两个角色,通过IO线程和SQL线程协作完成数据同步。Binlog有三种格式(ROW/STATEMENT/MIXED),记录详细的事件信息。从源码层面看,Binlog事件包含头、数据和尾部结构,通过特定函数写入缓存。异步复制是MySQL最基本的数据同步方式,Master执行事务后写入Binlog,Slave异步拉取和应用这些变更。原创 2025-10-08 10:22:53 · 922 阅读 · 0 评论 -
MySQL-12分库分表机制
MySQL分库分表是应对大数据量和高并发的核心方案,主要包括垂直分片和水平分片两种方式。垂直分片按业务模块或字段拆分到不同库表,如将用户、订单等业务分离到独立数据库。水平分片则通过范围或哈希算法将数据分布到多个分片,如按用户ID范围或哈希值分库分表。两种方式可结合使用,有效解决单库单表的性能瓶颈问题,提高系统扩展性和可用性。实际应用中需要根据业务特点选择合适的分片策略。原创 2025-10-08 10:07:25 · 1086 阅读 · 0 评论 -
MySQL-11MVCC一致性视图案例分析
MVCC一致性视图案例分析摘要 MVCC(多版本并发控制)是MySQL实现高并发事务处理的核心机制。本文通过实际案例分析了MVCC在不同场景下的行为表现和一致性保证。 案例涵盖基础可见性、不同隔离级别和并发更新等场景。在基础案例中,事务T1创建Read View后,即使T2更新并提交数据,T1仍能看到一致的旧版本数据。隔离级别测试显示:读未提交会看到未提交数据,读已提交每次查询创建新Read View,而可重复读(MySQL默认)保持事务内一致性视图。 分析表明,MVCC通过版本链、Read View和Un原创 2025-10-08 09:47:18 · 786 阅读 · 0 评论 -
MySQL-10MVCC原理剖析
MVCC(多版本并发控制)是数据库实现高并发的核心机制,通过维护数据行的多个版本实现非阻塞读操作。InnoDB存储引擎通过隐藏列(事务ID、回滚指针)、Undo日志和Read View实现MVCC。版本链结构记录数据修改历史,Read View定义事务可见性范围,依据事务ID比较规则判断数据版本是否可见。MVCC避免了读-写冲突,显著提升并发性能,同时保证事务隔离性。实现上依赖行记录隐藏列管理版本,通过垃圾回收机制清理过期版本,为现代数据库系统提供高效并发控制解决方案。原创 2025-10-08 09:44:26 · 610 阅读 · 0 评论 -
MySQL-09锁及算法源码
MySQL锁机制及源码分析摘要:MySQL提供多层次的锁机制保证数据一致性和并发性,包括服务器层的表锁、元数据锁和存储引擎层的行锁、间隙锁等。表锁是MyISAM引擎的基础锁机制,通过锁类型定义和兼容性检查实现并发控制。源码分析展示了表锁结构定义、锁类型枚举和获取函数实现。元数据锁(MDL)保护数据库对象元数据,具有多种锁类型和兼容性检查机制。锁机制通过严格的并发控制和冲突解决确保数据操作的正确性。原创 2025-10-07 13:59:31 · 887 阅读 · 0 评论 -
MySQL-08事务
MySQL事务机制详解摘要: MySQL事务通过ACID特性确保数据操作可靠性。ACID包括原子性(事务操作全完成或全不完成)、一致性(事务前后数据状态一致)、隔离性(并发事务互不干扰)和持久性(提交后永久有效)。MySQL支持四种隔离级别(读未提交、读已提交、可重复读和串行化),不同级别解决脏读、不可重复读和幻读问题。通过UNDO/REDO日志实现原子性和持久性,MVCC机制提升并发性能。开发者应根据业务需求选择合适隔离级别,并合理设计事务边界以保证数据一致性。原创 2025-10-07 13:58:42 · 816 阅读 · 0 评论 -
MySQL-07单路排序原理与双路排序原理
MySQL单路与双路排序原理 MySQL处理ORDER BY查询时,根据数据量和内存情况采用两种排序算法:单路排序和双路排序。 单路排序: 一次性读取所有列数据到排序缓冲区 内存中完成排序后直接返回结果 适用于数据量小、内存充足的场景 内存消耗大但CPU效率高 双路排序: 先读取排序键和行指针到缓冲区 排序后根据行指针回表获取完整数据 适用于大数据量或内存不足的情况 内存消耗小但增加了IO开销 选择依据主要取决于数据量大小、可用内存和行字段大小。原创 2025-10-07 13:58:00 · 700 阅读 · 0 评论 -
MySQL-06SQL优化的常用原则及案例分析
SQL优化是提升数据库性能的关键。本文系统介绍了SQL优化的核心原则:最小化数据访问、有效使用索引、避免排序操作。通过实际案例对比了低效SQL与优化后的版本,包括查询重写(子查询转JOIN、EXISTS替代IN、UNION优化)、JOIN类型选择(嵌套循环、哈希、合并连接)等技巧。优化后的SQL能显著减少数据扫描量、利用索引加速查询、降低排序开销,从而提升整体性能。遵循这些原则可帮助开发者编写高效SQL语句,优化数据库查询效率。原创 2025-10-07 13:57:07 · 1058 阅读 · 0 评论 -
MySQL-05Profile工具与Trace工具
MySQL性能分析工具摘要 MySQL提供了多种性能分析工具,主要包括Profile工具和Trace工具两大类。Profile工具如SHOW PROFILE可分析查询各阶段耗时(如Opening tables、Sending data等),通过SET profiling=1启用。Performance Schema是更全面的监控系统,包含检测点(Instruments)、消费者(Consumers)和事件表(Events)等组件,可通过SQL配置启用特定监控项。Trace工具则用于跟踪优化器决策和查询执行路原创 2025-10-07 13:56:08 · 1048 阅读 · 0 评论 -
MySQL-04索引及算法源码及选择
MySQL索引算法深度解析:本文系统介绍了MySQL索引的核心算法实现,重点剖析了B+树和哈希索引的结构原理。B+树部分通过源码级解析展示了查找、插入和分裂算法的实现细节,包含完整的代码片段和流程图解;哈希索引部分则详细说明了其桶数组结构和冲突处理方法。文章采用Mermaid图表直观呈现了索引分类、B+树层级结构和操作流程,适合数据库开发者和性能优化工程师深入理解MySQL索引底层机制。原创 2025-10-07 13:55:14 · 952 阅读 · 0 评论 -
MySQL-03数据存储结构
MySQL数据存储采用分层结构:逻辑层包含数据库、表、行等对象,物理层由表空间、段、区、页组成。InnoDB存储引擎使用16KB页作为基本单位,支持多种行格式(COMPACT、DYNAMIC等)。表空间分为系统表空间和独立表空间,其中系统表空间存储数据字典和撤销日志。数据页内部包含文件头、用户记录、页目录等结构,通过链表组织记录。不同行格式采用变长字段列表和NULL位图优化存储空间,记录头信息维护记录的物理顺序和逻辑关系。原创 2025-10-07 13:53:49 · 953 阅读 · 0 评论 -
MySQL-02存储引擎
MySQL存储引擎是数据库架构的核心组件,不同引擎提供各自的性能特点和适用场景。InnoDB是默认事务型引擎,支持行锁、外键和崩溃恢复;MyISAM适合读密集型应用,但不支持事务;Memory引擎将数据完全存储在内存中,访问极快但重启后数据丢失。其他引擎如CSV、Archive等满足特定需求。关键特性对比包括事务支持、锁级别、索引类型等。InnoDB采用缓冲池、重做日志等机制实现ACID特性,MyISAM通过分离数据/索引文件优化查询性能。选择存储引擎需权衡事务需求、并发性能和数据持久性要求。原创 2025-10-07 13:52:54 · 978 阅读 · 0 评论 -
MySQL-01存储架构
MySQL采用分层存储架构,包括连接层、服务层、存储引擎层和文件系统层。连接层处理客户端连接和认证;服务层包含SQL解析器、查询优化器和缓存机制;存储引擎层支持多种引擎如InnoDB、MyISAM等,各有特点。数据流分为查询和写入两种流程,通过缓冲池和日志机制优化性能。架构采用分层优化策略,从应用到硬件层面均有优化空间,并内置多种监控组件用于性能诊断。原创 2025-10-07 13:52:02 · 897 阅读 · 0 评论 -
MySQL: 忘记root密码: skip-grant-tables
MySQL 忘记root密码修改MySQL的登录设置# vi /etc/my.cnf 在[mysqld]段后附加一句:skip-grant-tables如:[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock skip-grant-tables 重启MySQL登录并修改MySQL的root密码# ...原创 2018-11-11 18:07:17 · 297 阅读 · 0 评论 -
MySQL: CentOS6.8: ERROR 1044 (42000)
MySQL: ERROR 1044 (42000)现象mysql> use mysql;ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'如果使用“mysql -uroot -p”登陆会报错,即使密码正确也不能登录,而且发现,直接用“mysql -uroot”不输入密码也可以登...原创 2018-11-11 17:58:41 · 431 阅读 · 0 评论 -
Command: mysql5.7 start and stop in win10
mysql5.7 start and stop in win10C:\WINDOWS\system32>net start mysql57MySQL57 服务正在启动 .MySQL57 服务已经启动成功。C:\WINDOWS\system32>net stop mysql57MySQL57 服务正在停止.MySQL57 服务已成功停止。...原创 2018-10-27 14:39:00 · 246 阅读 · 0 评论 -
MySQL: Change root password in Mac
Step 1.$ sudo /usr/local/mysql/bin/mysqld_safe –user=root & //start MySQL(Also, can start MySQL in System Preferences)Step 2.$ sudo /usr/local/mysql/bin/mysqladmin -uroot password yourpassword //set原创 2016-01-17 20:07:56 · 760 阅读 · 0 评论 -
MySQL: ERROR 1045 (28000) when GRANT
Description# mysql -uroot -p123456mysql> GRANT ALL PRIVILEGES ON *.* TO 'xyzuser'@'localhost' IDENTIFIED BY 'xyzuser' WITH GRANT OPTION;ERROR 1045 (28000): Access denied for user 'root'@'localhost'原创 2015-05-26 07:37:06 · 664 阅读 · 0 评论 -
MySQL: Change root password
mysql> use mysql;mysql> UPDATE user SET Password=PASSWORD('Your new password!') where USER=’root’; mysql> FLUSH PRIVILEGES; mysql> quit原创 2015-05-31 11:28:26 · 606 阅读 · 0 评论 -
MySQL: Fundamental control commands
Start MySQL in Ubuntumysql -u root -pEnter password:(Enter your password here!)Commandsmysql> show databases;Database:bookshop, mysql, test...mysql> use bookshop;Database changedmysql> show tables原创 2015-05-31 11:26:47 · 633 阅读 · 0 评论 -
MySQL: 设置表名不区分大小写
MySQL: 设置表名不区分大小写vi修改/etc/my.cnf# vi /etc/my.cnf 在[mysqld]段后附加一句:lower_case_table_names=1如:[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock lower_case_table_names=1重启MySQL...原创 2018-11-11 18:16:01 · 273 阅读 · 0 评论 -
MySQL: 数据库拒绝访问[远程连接]
MySQL: 数据库拒绝访问[远程连接]登录MySQL$ /usr/local/mysql/bin/mysql -u root -pmysql> user mysql;mysql> select host from user;mysql> update user set host ='%' where user ='root';mysql> exit;重...原创 2018-11-11 18:31:46 · 1115 阅读 · 0 评论 -
MySQL: 普通用户查看存储过程权限问题
MySQL: 普通用户查看存储过程权限问题SHOW GRANTS FOR cpcampus;#关键GRANT SELECT ON `mysql`.`proc` TO 'cpcampus'@'%';SHOW GRANTS FOR cpcampus;原创 2018-11-11 18:35:43 · 2187 阅读 · 0 评论 -
MySQL: Skill: Excel数据导入到MySQL表中
MySQL: Excel数据导入到MySQL表中使用Navicat for MySQL 或者 Navicat premium 121. 目标表2. 源数据3. 点击数据库Tables4. 选择数据源格式为Excel5. 选择Excel数据源所在Sheet6. 输入Excel中数据源字段名所在行数和需导入数据起始行数注意: Excel中字段名 应与 MySQL表中字段名 ...原创 2019-02-20 09:16:56 · 427 阅读 · 0 评论
分享