数据库 20 / 255 题
read view
MySQL 的 Read View(读视图) 是 InnoDB 存储引擎实现 多版本并发控制(MVCC) 的核心机制,用于在事务中动态决定数据版本的可见性,从而支持高并发下的数据一致性。核心:避免脏读与不可重复读事务 A...
undo日志是什么
保障事务原子性- 事务回滚机制:当事务执行失败或显式回滚(ROLLBACK)时,Undo Log 记录的数据修改前的状态可用于恢复原始数据。INSERT 操作:记录新插入数据的主键,回滚时直接删除该行。UPDATE/DELETE...
mvcc
MySQL的MVCC(多版本并发控制)是一种通过为每行数据维护多个版本实现高并发的机制,核心依赖三个隐藏字段(DB_TRX_ID记录最后修改的事务ID、DB_ROLL_PTR指向历史版本的指针、DB_ROW_ID隐式主键)、Undo...
tcc模式
原理:业务层面分三阶段:Try:预留资源(如冻结库存)。Confirm:确认操作(正式扣减)。Cancel:失败时释放资源。适用场景:需高一致性且可补偿的业务(如金融系统)。幂等性:保证业务逻辑的每个阶段即使重复执行也不会产生不良影响...
分布式事务-最终一致性
原理:通过消息队列异步同步数据,允许短暂不一致,最终达到一致。// 步骤1:订单服务本地事务 $dbOrder->begin_transaction(); $dbOrder->query("INSERT INTO orders...
分布式事务-xa方式
假设有两个 MySQL 数据库:db_order:订单表 ordersdb_inventory:库存表 inventory业务逻辑:用户下单时创建订单并扣减库存,需保证原子性。在 PHP 中实现 XA...
什么是MySQL中的分布式事务
分布式事务的必要性当业务涉及多个数据库(如订单库、库存库、用户积分库独立部署)时,单机事务无法保证跨库操作的原子性。例如:用户支付后需同时创建订单(库A)、扣减库存(库B)、增加积分(库C)。任意一个操作失败,需全部回滚,否则导致数据...
Mysql高并发如何调优
可以做主从,分库分表、集群。做连接池索引优化、做redis缓存、MySQL参数:max_connections=1000...
mysql sql 索引优化
正确创建索引1.建立覆盖索引假设我们有一个订单表(orders),包含了订单号、下单时间、用户ID、订单总金额等字段。为了提高查询效率,我们希望建立一个覆盖索引,包含了订单号、下单时间、订单总金额三个字段。CREATE INDEX...
mysql主从或集群如何调优
# 主从通用(配置文件 my.cnf) innodb_buffer_pool_size = 服务器内存的70% # 加大内存缓存,减少硬盘读取 innodb_flush_log_at_trx_commit = 2 #...
Mysql性能调优配置
1.内存优化缓冲池配置innodb_buffer_pool_size作用:缓存数据与索引,减少磁盘I/O。建议值:物理内存的...
mysql主从复制常见的问题有哪些,如何调优
数据不一致问题表现:主从数据差异,复制报错Duplicate...
Mysql 备份
1.逻辑备份mysqldump适合中小数据库导出SQL语句(建表、插入数据等),恢复时重新执行这些语句重建数据库。恢复操作# 恢复整个数据库(需提前创建空库) mysql -u root -p mydb <...
mysql故障处理
1.故障定位诊断错误日志:tail -f /var/log/mysql/error.log # 实时跟踪错误日志[1,6](@ref) SHOW VARIABLES LIKE 'log_error'; #...
Mysql 数据丢失
立即停止写操作执行 ALTER DATABASE [db_name] READ_ONLY;...
Php tp 集群如何操控
在config/database.php中配置多个集群连接,每个集群独立设置主从节点:return [ // 默认集群(集群1) 'cluster1' => [ 'type' => 'mysql', 'hostname' =>...
主从复制实操
主库(Master)和从库(Slave)需安装相同版本的MySQL(建议≥5.7)。确保两台服务器网络互通(可通过ping命令测试)。主从库的server-id必须全局唯一(例如主库设为1,从库设为2)主库修改:编辑/etc/my.c...
Mysql 分布式-方案
方案1:主从复制 +...
Mysql 分布式
分片(Sharding)本质:将一张大表水平拆分存储到多个数据库节点(如按用户ID哈希或日期范围分片)。目标:解决单机存储和性能瓶颈,支持水平扩展。例如:10亿用户表拆分为10个库,每个库存1亿用户数据。复制(Replication)...
如何在MySQL中实现数据压缩?
在MySQL中,可以通过几种方式实现数据压缩: - 使用压缩表的存储引擎,如InnoDB的压缩表特性。 - 在应用层对大型文本或二进制数据进行压缩后存储。 -...