广州市外贸网站建设企业手机网站竞价

张小明 2025/12/31 18:12:12
广州市外贸网站建设企业,手机网站竞价,安徽合肥做网站,wordpress企业网站实例外键基础概念 外键是一个表中的字段#xff0c;它引用另一个表的主键或唯一键#xff0c;用于确保两个表之间的数据一致性。 -- 主表#xff1a;用户 CREATE TABLE user ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL ); -- 从表#xff1a;订单…外键基础概念外键是一个表中的字段它引用另一个表的主键或唯一键用于确保两个表之间的数据一致性。-- 主表用户CREATETABLEuser(idINTPRIMARYKEYAUTO_INCREMENT,nameVARCHAR(50)NOTNULL);-- 从表订单通过 user_id 关联 user.idCREATETABLEorders(idINTPRIMARYKEYAUTO_INCREMENT,order_noVARCHAR(20)NOTNULL,user_idINT,FOREIGNKEY(user_id)REFERENCESuser(id)-- 外键约束);本质是数据库层面的强制引用完整性检查。外键约束类型与行为当主表数据变更时从表如何响应MySQL 提供 5 种约束行为约束类型主表 DELETE主表 UPDATE使用场景CASCADE级联删除从表数据级联更新从表外键值强关联数据用户注销→删除订单SET NULL从表外键设为 NULL从表外键设为 NULL可选关联部门删除→员工部门ID置空RESTRICT阻止删除默认行为阻止更新强保护有订单时不能删用户NO ACTION同 RESTRICTSQL 标准同 RESTRICT与 RESTRICT 等价SET DEFAULT设为默认值InnoDB 不支持设为默认值InnoDB 引擎无效完整创建语法CREATETABLEorders(idINTPRIMARYKEY,user_idINT,FOREIGNKEY(user_id)REFERENCESuser(id)ONDELETECASCADE-- 删除用户时级联删除订单ONUPDATERESTRICT-- 更新用户ID时阻止一般不会更新主键);外键实现原理数据字典与元数据-- 查看外键信息SELECTCONSTRAINT_NAME,TABLE_NAME,COLUMN_NAME,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAMEFROMINFORMATION_SCHEMA.KEY_COLUMN_USAGEWHEREREFERENCED_TABLE_NAMEISNOTNULL;InnoDB 在数据字典中维护外键元数据包括父表、子表、关联列和约束类型。锁机制性能杀手当插入/更新/删除子表时InnoDB 会加间隙锁Gap Lock保护父表-- 场景orders 表有外键 user_id 引用 user.idBEGIN;INSERTINTOorders(user_id)VALUES(100);-- 子表插入-- InnoDB 隐式加锁-- 在 user 表的 id100 记录上加 **共享间隙锁**-- 阻止其他事务删除/更新 user.id100防止插入孤儿订单锁范围主表user (id 列)插入子表给主表对应 id 加共享锁删除主表检查从表是否有引用加共享锁扫描更新主表 id给新/旧 id 都加锁性能影响高并发写入时外键检查导致锁竞争加剧删除主表记录需全表扫描从表无索引时外键检查时机约束检查模式-- 会话级设置 SET foreign_key_checks 0; -- 临时关闭外键检查危险 SET foreign_key_checks 1; -- 开启默认批量导入数据时-- 先关闭外键检查加速导入SETforeign_key_checks0;LOADDATAINFILEorders.csvINTOTABLEorders;SETforeign_key_checks1;-- 完成后务必开启外键的优点数据一致性保障-- 无法插入孤儿记录INSERTINTOorders(user_id)VALUES(999);-- ERROR 1452: Cannot add or update a child row-- 无法删除被引用的父记录DELETEFROMuserWHEREid100;-- ERROR 1451: Cannot delete or update a parent row级联操作简化业务代码-- 删除用户时自动级联删除订单、地址、积分ONDELETECASCADE;-- 无需手动写多个 DELETE 语句文档化表关系外键约束显性定义了表间关系新开发人员可快速理解数据模型。外键的缺点互联网大厂弃用原因性能瓶颈锁竞争高并发下外键检查间隙锁导致锁等待延迟增加外键检查增加 5-10% SQL 执行时间级联删除慢删除主表 1 条记录可能触发从表百万级级联删除扩展性差分库分表失效跨库外键无法检查ShardingSphere 等中间件不支持外键微服务架构冲突服务拆分后跨服务外键无法约束业务耦合删除主表受阻业务想软删除用户但外键阻止热更新困难修改表结构需先删外键增加运维复杂度级联陷阱-- 误操作删除 1 个用户级联删除 10 万订单无法回滚DELETEFROMuserWHEREid1;-- 瞬间删 10 万数据-- 解决应用层软删除 定时任务清理UPDATEuserSETdeleted1WHEREid1;-- 业务层控制大厂最佳实践去外键化应用层保证一致性ServicepublicclassUserService{TransactionalpublicvoiddeleteUser(LonguserId){// 1. 先检查是否有订单if(orderRepository.countByUserId(userId)0){thrownewBusinessException(用户有订单不能删除);}// 2. 再删除用户userRepository.deleteById(userId);}}软删除 定期归档-- 用户表增加 deleted 字段ALTERTABLEuserADDCOLUMNdeletedTINYINTDEFAULT0;-- 删除操作变为更新UPDATEuserSETdeleted1WHEREid100;-- 从表订单保留 user_id业务查询自动过滤SELECT*FROMordersWHEREuser_idIN(SELECTidFROMuserWHEREdeleted0);分布式事务跨服务// 使用 Seata / Saga 模式保证最终一致性GlobalTransactionalpublicvoidcreateOrder(LonguserId){// 1. 调用用户服务校验用户存在userService.checkUserExists(userId);// 2. 创建订单orderRepository.save(newOrder(userId));// 3. 异常时全局回滚}什么时候该用外键推荐使用场景内部管理系统并发低、数据一致性要求高-- 企业内部 ERPCREATETABLEemployee_dept(emp_idINT,dept_idINT,FOREIGNKEY(emp_id)REFERENCESemployee(id)ONDELETECASCADE);强关联数据无孤立记录可能-- 订单明细与订单头FOREIGNKEY(order_id)REFERENCESorder_header(id)ONDELETECASCADE开发规范严格团队小、运维规范不推荐场景高并发互联网业务C2C 电商、社交分库分表架构ShardingSphere、MyCat 环境微服务架构跨服务数据无法约束需要柔性事务允许短暂不一致性能对比测试-- 测试环境MySQL 8.0, 100 万订单, 10 万用户-- 场景 1插入订单有外键INSERTINTOorders(user_id,amount)VALUES(1001,99.00);-- 耗时1.2ms检查 user.id1001 是否存在-- 场景 2插入订单无外键INSERTINTOorders(user_id,amount)VALUES(1001,99.00);-- 耗时0.3ms-- 场景 3删除用户有外键 级联DELETEFROMuserWHEREid1001;-- 耗时500ms级联删除 10 条订单-- 场景 4删除用户无外键 软删UPDATEuserSETdeleted1WHEREid1001;-- 耗时0.1ms性能结论外键使写入性能降低 30-50%删除性能降低 10-100 倍。外键与索引的关系外键自动创建索引-- 建外键时若 user_id 无索引InnoDB 自动创建FOREIGNKEY(user_id)REFERENCESuser(id);-- InnoDB 自动CREATE INDEX user_id ON orders(user_id);手动删除外键索引-- ❌ 错误无法删除被外键使用的索引DROPINDEXuser_idONorders;-- ERROR-- ✅ 正确先删外键再删索引ALTERTABLEordersDROPFOREIGNKEYorders_ibfk_1;DROPINDEXuser_idONorders;
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

常州做企业网站的公司适合ps做图的素材网站有哪些

3大技术突破重构工业异常检测智能化路径 【免费下载链接】AnomalyGPT 项目地址: https://gitcode.com/gh_mirrors/an/AnomalyGPT 传统工业质检长期面临人工阈值设定复杂、误检率居高不下的行业痛点。随着智能制造时代的到来,基于大视觉语言模型的AnomalyGPT…

张小明 2025/12/27 0:17:34 网站建设

wordpress网站建设公司公司的官方网站的作用

文章目录系统截图项目简介大数据系统开发流程主要运用技术介绍爬虫核心代码展示结论源码文档获取定制开发/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统截图 基于Python的出行路线规划与推荐系统 数据分析可视化大屏系统_4s75623d 项目…

张小明 2025/12/31 10:53:37 网站建设

网站服务器制作包河网站建设

终极MCP测试指南:7天掌握协议全功能验证 【免费下载链接】servers Model Context Protocol Servers 项目地址: https://gitcode.com/GitHub_Trending/se/servers 你是否在为MCP协议的各种功能测试而烦恼?面对工具调用、资源管理、提示词模板等复杂…

张小明 2025/12/27 0:17:31 网站建设

仿 手机 网站模板html大型集团公司网站建设方案

C语言指针详解:内存操作的核心利器 一、引言:从数组到指针的自然过渡 在上一篇《C语言利用数组处理批量数据》中,我们深入学习了如何用数组高效组织和处理同类型数据。然而,你是否注意到这样一个现象? int arr[5] {…

张小明 2025/12/31 0:20:26 网站建设

网站开发需要的编程软件校园学生网站开发

理论知识网络的发展历程单机时代->局域网->广域网->移动互联网时代(国内的网络发展相对较慢,2000年前后,才真正的进入了网络时代)组建网络的核心设备路由器和交换机是组建网络的核心设备(交换机可以认为是对路由器的接口进行拓展)网络通信基础知识网络互联的目的是为了…

张小明 2025/12/26 12:02:17 网站建设

农业建设项目管理信息系统网站传媒公司注册经营范围

SQL Server数据库管理与维护全解析 在SQL Server数据库的管理和维护工作中,会遇到各种问题和挑战。下面我们将详细探讨数据库应急状态处理、备份恢复、对象管理等多个方面的内容。 数据库应急状态与备份恢复 数据库可能会出现逻辑不一致的情况,例如银行账户意外存入100万美…

张小明 2025/12/27 3:10:37 网站建设