【MySQL】 深入了解InnoDB存储引擎的限制

目录

列数限制

索引数限制

InnoDB的行格式和索引限制

示例和注意事项

**页大小对索引键前缀长度的影响

**对全列索引键的限制

多列索引限制

行大小限制

InnoDB log限制

表空间大小限制

表数量限制

操作系统限制

文件大小和日志文件大小

文件层级限制


随着数据库技术的不断发展,了解不同存储引擎的限制变得至关重要。本文将深入探讨InnoDB存储引擎的一系列限制,包括表、索引、表空间等方面的限制,帮助开发人员更好地理解和优化数据库设计。

列数限制

MySQL规定,一个表最多可以包含1017个列。需要注意的是,虚拟生成列也计入这一限制。对于那些需要大量列的业务场景,开发人员应当注意这一限制,确保表结构的设计在合理范围内。

索引数限制

每个表最多可以包含64个辅助索引(secondary indexes)。辅助索引在数据库查询优化中起着重要作用,但限制了其数量有助于维持系统的高效性。

InnoDB的行格式和索引限制

InnoDB支持不同的行格式,包括DYNAMIC、COMPRESSED、REDUNDANT和COMPACT。这些行格式在索引键前缀长度方面有所不同。

对于使用DYNAMIC或COMPRESSED行格式的表,索引键前缀长度限制为3072字节。这为数据库设计提供了更大的灵活性,但也需要开发人员注意索引键长度的合理控制,以避免超出限制。

对于使用REDUNDANT或COMPACT行格式的表,索引键前缀长度限制为767字节。在这种情况下,开发人员需要更谨慎地选择索引和列前缀长度,以确保不会超出限制。

示例和注意事项

举例来说,如果在utf8mb4字符集下,使用了TEXT或VARCHAR列,并且尝试创建一个超过191字符的列前缀索引,就有可能超出限制,导致错误的发生。

**页大小对索引键前缀长度的影响

InnoDB的页大小也会影响索引键前缀长度的限制。通过在创建MySQL实例时指定innodb_page_size选项,可以将InnoDB页大小设置为8KB或4KB。在这种情况下,最大索引键长度将按比例降低,基于16KB页大小的3072字节限制。

  • 当页大小为8KB时,最大索引键长度为1536字节。
  • 当页大小为4KB时,最大索引键长度为768字节。

**对全列索引键的限制

值得注意的是,适用于索引键前缀的限制也同样适用于全列索引键。在设计数据库表时,开发人员应当综合考虑这些限制,以制定出最佳的数据库索引策略。

多列索引限制

对于多列索引,InnoDB表规定最多允许16个列。超出这个限制将导致错误的发生,系统会返回类似以下的错误信息:

ERROR 1070 (42000): Too many key parts specified; max 16 parts allowed

行大小限制

InnoDB表对行的大小也有一定的限制。虽然InnoDB内部支持大于65,535字节的行大小,但MySQL本身对行的大小设置了一个限制,不允许超过65,535字节。这一限制是对所有列大小的综合限制,开发人员应当在设计表结构时留意这个限制。

InnoDB log限制

对于InnoDB日志文件,其组合最大大小限制为512GB。

表空间大小限制

InnoDB表的表空间大小也是有限制的,最小表空间大小略大于10MB。具体的最大表空间大小取决于InnoDB页大小,具体关系如下表所示:

InnoDB Page Size最大表空间
4KB16TB
8KB32TB
16KB64TB
32KB128TB
64KB256TB

表数量限制

一个InnoDB实例支持最多2^32(4294967296)个表空间,其中一小部分表空间被保留用于撤销和临时表。

共享表空间支持最多2^32(4294967296)个表。

操作系统限制

文件大小和日志文件大小

在一些老旧的操作系统上,文件大小可能受到2GB的限制,但这并不是InnoDB的限制。如果需要更大的系统表空间,建议使用多个较小的数据文件,而不是一个大型数据文件,或者将表数据分布在以文件为单位的表空间数据文件中。

文件层级限制

表空间文件的路径,包括文件名,不能超过Windows上的MAX_PATH限制。在Windows 10之前,MAX_PATH限制为260个字符。截至Windows 10,版本1607,常见的Win32文件和目录函数不再受MAX_PATH限制,但您必须启用新的行为。

有关并发读写事务的限制,待续。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/644141.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Note]笔USI协议中Hash的应用

USI中,Hash的作用是什么? 在笔出墨之前,USI controller需要得到笔的一系列信息,例如颜色、宽度、压力、倾角信息等等,才允许出墨。 为了加快出墨的速度,USI controller内置一个information cache&#xf…

matlab模型变量一般说明,标定和显示量,以及产生a2l文件,自动填充a2l地址,并使用标定工具ati进行标定(推荐重要)

注意我是用的是matlab2019b 1,输入标定量,使用constant,用cal函数包裹 2,输出显示量,在划线上标注,然后用display函数包裹, 第一步和第二步完成以后,生产标定量a2l 3,输入…

【SSH】Linux常用命令

文章目录 一、目录操作1.1 cd命令1.1.1 返回上一级目录1.1.2 返回上两级目录1.1.3 进入某个目录下1.1.4 返回上次所在目录1.1.5 进入某目录1.1.6 返回根目录1.1.7显示目录路径 1.2 查看(ls)选项1.2.1 查看当前目录中的文件1.2.2 显示目录结果1.2.3 显示文…

什么是护网行动?

护网,也称“网络保护”,是指网络安全人员对企业或组织的网络进行检查、维护和保护,以防止网络受到黑客攻击、病毒、木马或其它恶意程序的侵入和损害。护网工作包括:网络安全规划、网络配置和控制、漏洞发现和修复、入侵检测和防范…

Qt 多次绘图

使用Qt 的时候发现: 背景:自己定义一个类,把它和某个ui文件绑定。(类似 Qt creator 默认创建的工程)问题:当鼠标在窗口内单击的时候会触发2次绘图。?难道不应该是一次吗? 于是开始了如下的测试…

电源设计如果只看电压跌落,不看电流密度会怎么样?

高速先生成员--黄刚 大家知道,电源直流设计的理论其实非常的简单,归根到底就是欧姆定律,电源芯片给负载供给电流,电流经过传输路径有一定的压降,最终到达负载端的电压值就是我们接收芯片关注的结果。 在PCB设计中&…

新网站收录需要多长时间完成审核

新网站的收录时间因多种因素而异。 一般来说,新上线的网站可能在最快3-7天内被百度收录,尤其是那些有高质量内容的网 然而,通常情况下,新网站的收录可能会在7-15天左右发生。 有些情况下,如果网站的内容足够丰富和有价…

nvm 配置淘宝镜像失效,以及安装node后 npm-v 无效

win11 nvm版本 1.1.4 和1.1.7和1.1.12(目前最新版本24年 一月二十三日) 以上nvm版本都会出现一下问题, 从https://github.com/coreybutler/nvm-windows/releases 下载nvm安装包如下图 傻瓜式安装后,不用去配置环境变量&#…

【2023】无痕制作钓鱼邮件

当涉及到网络安全和信息保护时,钓鱼攻击一直是备受关注的话题。钓鱼攻击是一种利用社交工程手段欺骗用户,诱使其提供敏感信息或执行恶意操作的攻击方式。它不仅威胁个人用户的隐私和财产安全,也对组织和企业的机密信息构成严重威胁。为了增强…

Linux第35步_在“移植uboot”前安装libncurses5-dev

在“移植uboot”前,需要在Ubuntu中安装“libncurses5-dev”,否则在“编译uboot”时,会报错。目的是保证顺利移植“uboot”。 1、打开终端 2、输入“sudo apt-get install libncurses5-dev bison flex回车”; 3、输入密码“1234…

3W Star 网易云音乐第三方开源 API 仓库因侵权被要求删除

NeteaseCloudMusicApi是一个使用Node.js编写的非官方网易云音乐API,用于获取网易云音乐平台的歌曲信息。该项目是完全开源的,在GitHub上获得了超过3万的star。 根据公开信息,NeteaseCloudMusicApi的主要目的是整理网易云音乐公开的网页接口&a…

Linux逻辑卷创建与扩容

​ 钢铁知识库,一个学习python爬虫、数据分析的知识库。在职运维,又喜欢开发。 什么是lvm逻辑卷 ​ LVM(逻辑卷管理)是一种在Linux环境中广泛使用的磁盘管理技术。它允许管理员创建逻辑上的磁盘分区,这些分区可以跨越…

node 第二十三天 mongoDB shell 命令 CRUD 增删改查 基础

什么是 mongoDB shell 命令 mongoDB shell 命令就是在cmd窗口或者powershell窗口与mongoDB交互的命令, 以下简称mongosh 对应我们上一天安装的 mongosh 工具 有什么用 mongosh 对一般的开发者可能意义不大, 因为在开发过程中我们会基于某一款语言来使用mongoDB, 比如在node端我…

需求分析的结构化和面向对象方法

需求分析的方法,主要有结构化(SA)方法、面向对象分析(OOA)方法。另外有面向问题域的分析(Problem Domain Oriented Analysis,PDOA)方法,还有一些形式化方法例如VDM ( Vienna Design Method)和Z等…

基于cubeMX的正点原子miniSTM32对W25Q64的存储使用

一、实现目标 使用cubeMX建立项目工程,结合正点原子提供的hal库对W25Q64闪存调用的例程,实现W25Q64的读写。 二、实现过程 1、首先建立cubeMX工程,其他项设置不再叙述,只看连接W25Q64的SPI设置,这里使用SPI1&#xf…

阶乘分解《算法竞赛进阶指南》

阶乘分解《算法竞赛进阶指南》 \Huge{阶乘分解《算法竞赛进阶指南》} 阶乘分解《算法竞赛进阶指南》 题目地址:197. 阶乘分解 - AcWing题库 文章目录 题面输入格式输出格式数据范围输入样例:输出样例:样例解释 思路标程 题面 给定整数 N N…

2.1 关系模型的数据结构及形式化定义

2.1.1 关系 单一的数据结构----关系 现实世界的实体以及实体间的各种联系均用关系来表示 。 逻辑结构----二维表 从用户角度,关系模型中数据的逻辑结构是一张二维表 。 建立在集合代数的基础上。 1. 域(domain) 2. 笛卡儿积(C…

RAF(requestAnimationFrame) 和 RIC(requestIdleCallback) 是什么

requestAnimationFrame requestAnimationFrame: 告诉浏览器在下次重绘之前执行传入的回调函数(通常是操纵 dom,更新动画的函数);由于是每帧执行一次,那结果就是每秒的执行次数与浏览器屏幕刷新次数一样,通常是每秒 60…

layui给table列表添加鼠标悬停title显示

function tablehs() {tabhs table.render({elem: #ta1currentTablehs,id: ta1currentTablehs,url: orderComplaint/uploadlist,height: 300,autoSort: false,//禁用前端自动排序,否则会与数据库返回的数据顺序不一致contentType: application/json,cellMinWidth: 8…

记一次垃圾笔记应用VNote安装失败过程

特色功能简介 1.全文搜索: VNote支持根据关键词搜索整个笔记本或者特定文件夹内的文档内容,非常适合快速找到信息。 2.标签管理: 你可以给笔记添加标签,从而更好地组织和检索你的笔记内容。 3.自定义主题和样式: 进入设置,VNote允许你选…