MySQL外键约束简介

技术MySQL外键约束简介 MySQL外键约束简介InnoDB是目前MySQL中唯一支持外键的内置存储引擎,所以如果需要外键支持那选择 就不多了(PBXT也有外键支持)。使用外键是有成本的。比如外键通常

MySQL外键约束介绍

InnoDB是目前MySQL中唯一支持外键的内置存储引擎,所以如果需要外键支持,选择不多(PBXT也支持外键)。

使用外键是有成本的。例如,外键通常要求每次修改数据时,应该在另一个表中再执行一次查找操作。尽管InnoDB强制外键使用索引,但它仍然不能消除约束检查的开销。如果外键列的选择性低,将导致非常大且低的选择性指数。例如,在一个非常大的表中有一个状态列,您希望限制该状态列的值。如果这个列只能取三个值3354,虽然这个列本身很小,但是如果主键很大,那么这个索引就会很大3354,除了外键限制,这个索引就没有其他功能了。

但是,在某些情况下,外键可以提高一些性能。如果您想确保两个相关的表始终具有一致的数据,那么使用外键的性能比在应用程序中检查一致性要高得多。此外,外键在删除和更新相关数据方面比维护应用程序更有效。但是外键维护是逐行进行的,这样的更新会比批量删除更新慢。

外键约束要求对其他一些表的额外访问,这也意味着额外的锁。如果一条记录被写入子表,外键约束会让InnoDB检查对应父表的记录,因此需要锁定父表的对应记录,以确保事务完成时不会删除这条记录。这将导致额外的锁等待,甚至一些死锁。因为不能直接访问这些表,所以这种死锁问题通常很难解决。

有时,可以使用触发器来代替外键。对于相关数据,同时更新外键更为合适,但如果外键仅作为数值约束,则最好触发或显式限制该值。(这里可以直接使用ENUM类型。)

如果只使用外键作为约束,通常最好在应用程序中实现该约束。外键会带来很多额外的消耗。这里没有相关的基准数据,但是我们遇到了很多案例。在分析性能时,我们发现外键约束是瓶颈,删除外键后性能立即得到了很大的提升。

作者:小家电维修

有时候,见面之后,就没有时间了。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/88689.html

(0)

相关推荐

  • 抖音播放量突然被限流降权是什么原因

    技术抖音播放量突然被限流降权是什么原因 抖音播放量突然被限流降权是什么原因抖音播放量突然被限流降权是什么原因本来发布的视频播放量都挺稳定的,但突然有一天发布的视频播放量急降,这个情况相信不少用户也遇到过

    礼包 2021年11月27日
  • python写自动化脚本用什么框架(python自动化脚本如何开展)

    技术Python的自动化脚本有哪些Python的自动化脚本有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。前言:大家平时有没有注意到你每

    攻略 2021年12月20日
  • 如何分析bootstrap和vue的区别

    技术如何分析bootstrap和vue的区别今天就跟大家聊聊有关如何分析bootstrap和vue的区别,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。区别:1、B

    攻略 2021年11月2日
  • singletask模式应用(singletask缺点)

    技术singleTask的配置文件有哪些本篇内容介绍了“singleTask的配置文件有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅

    攻略 2021年12月18日
  • 位图索引BitMap举例分析

    技术位图索引BitMap举例分析这篇文章主要介绍“位图索引BitMap举例分析”,在日常操作中,相信很多人在位图索引BitMap举例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”位图索

    攻略 2021年12月8日
  • 竹字头一个见,竹字头下面一个即念什么

    技术竹字头一个见,竹字头下面一个即念什么竹字头下面一个均念筠竹字头一个见,读音为yún jūn。 含义如下: 筠Jūn〈名〉 1 唐羁縻州,其地即今四川省南部的筠连县。 2 另见 yún。 筠yún〈名〉 (1)形声。从

    生活 2021年10月26日