百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

MySQL之最(mysql最高版本)

nanshan 2024-10-13 03:52 17 浏览 0 评论

最大和最小

  • 一个表里最多可有1017列(在MySQL 5.6.9 之前最大支持1000列)。虚拟列也受限这个限制。
  • 一个表最多可以有64个二级索引。
  • 如果innodb_large_prefix打开,在InnoDB表DYNAMIC或COMPRESSED列格式下,索引前缀最大支持前3072字节;如果不打开的话,在任意列格式下,最多支持前767字节。 这个限制既适用于前缀索引也适用于全列索引。
  • 基于一个16KB的页最多装3072个字节,如果你把InnoDB 的page 大小从8KB降到4KB,索引的长度也相应的降低。也就是说,当页是8KB的时候最大索引长度是1536字节;当页大小是4KB的时候最大索引长度是768字节;
  • 联合索引最多支持16列,如果超过这个限制就会遇到以下错误: ERROR 1070 (42000): Too many key parts specified; max 16 parts allowed行长度(除去可变长类型:VARBINARY/VARCHAR/BLOB/TEXT),要小于页长(如4KB, 8KB, 16KB, and 32KB)的一半。 例如:innodb_page_size 长度是16KB的话,行长不超过8KB;如果innodb_page_size 是64KB的话,行长不超过16KB; LONGBLOB/LONGTEXT/BLOB/TEXT列必须小于4GB,整个行长也必须小于4GB。 如果一行小于一页的一半,它可以存在一个page里面。如果超过了页的一半,就会把可变长列放到额外的页存(如果对这个感兴趣的话可以看看, MySQL页管理)。
  • 虽然InnoDB内部支持行长大于65,535字节,但是MySQL限制了所有列的组合长度(如果对这个感兴趣的话可以看看, 表的列大小和行长)。 例如: mysql> CREATE TABLE t (a VARCHAR(8000), b VARCHAR(10000), -> c VARCHAR(10000), d VARCHAR(10000), e VARCHAR(10000), -> f VARCHAR(10000), g VARCHAR(10000)) ENGINE=InnoDB; ERROR 1118 (42000): Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. You have to change somecolumns to TEXT or BLOBs
  • 在一些老操作系统中,文件必须小于2GB。这并非是InnoDB本身的限制,如果你需要大的表空间,就要配置使用几个小的数据文件而不是一个大的数据文件。
  • InnoDB日志文件组合大小最大可以是512GB。最小的表空间是10MB,最大的表空间取决于InnoDB页大小(最大表空间也就是最大表大小)。 InnoDB表空间大小:
 InnoDB页大小	最大表空间
 4KB	16TB 
 8KB 32TB
 16KB 64TB
 32KB 128TB
 64KB 256TB
  • 默认InnoDB页大小是16KB,你可以在创建一个实例的时候,修改配置文件里面这个innodb_page_size来提高或降低页大小。
  • 在 Barracuda文件格式下,ROW_FORMAT=COMPRESSED最大支持page_size 16KB。
  • 除了ROW_FORMAT=COMPRESSED最大page size只能是16KB以外,可以配置page size是32KB或者64KB。当page size是32KB或者64KB的时候,最大记录长度是16KB。当 innodb_page_size=32k时,扩展长度是2MB;当 innodb_page_size=64k时,扩展长度是4MB。
  • 一个MySQL实例只能指定1个innodb_page_size,而不能根据数据文件或者日志文件定制这些文件的innodb_page_size。

表和事务

  • 如果innodb_table_locks=1的话,lock tables需要在每个表上加两把锁。除了在MySQL Server层的表锁,还需要再InnoDB层也加锁。在MySQL 4.1.2之前的版本,不需要InnoDB层的表锁;可以通过设置innodb_table_locks=0选择老的表设定方式。如果没有获取InnoDB层的表锁,即使某些记录被其他事务锁定,lock tables也可以完成。 在MySQL 5.7,innodb_table_locks=0 就会对lock tables … write显示锁定不起作用。但是通过 lock tables … writes加隐式锁(比如:触发器) 或者 lock tables … read加锁,对读或写确实有作用。 2.所有的InnoDB锁都被事务持有,当这个事务已经提交或者回滚的时候,InnoDB的锁就会被释放。所以,在autocommit=1模式下,在InnoDB表上执行lock table没多大意义,因为获取的InnoDB表锁会被立即释放。
  • LOCK TABLES执行隐式commit和unlock table,所以在(锁表)事务过程中你不能再锁其他的表了。
  • 数据修改事务的上限是96*1023个并发事务(undo记录)。在128个回滚段中的32个都被分配给了非redo日志(这些日志是由修改临时表和相关对象事务产生)。这样就把并发修改数据事务的上限从128K降到了96K。这96K限制的是修改非临时表的事务上限。如果所有的修改数据事务都是修改临时表的话,上限是32K个并发事务。

相关推荐

0722-6.2.0-如何在RedHat7.2使用rpm安装CDH(无CM)

文档编写目的在前面的文档中,介绍了在有CM和无CM两种情况下使用rpm方式安装CDH5.10.0,本文档将介绍如何在无CM的情况下使用rpm方式安装CDH6.2.0,与之前安装C5进行对比。环境介绍:...

ARM64 平台基于 openEuler + iSula 环境部署 Kubernetes

为什么要在arm64平台上部署Kubernetes,而且还是鲲鹏920的架构。说来话长。。。此处省略5000字。介绍下系统信息;o架构:鲲鹏920(Kunpeng920)oOS:ope...

生产环境starrocks 3.1存算一体集群部署

集群规划FE:节点主要负责元数据管理、客户端连接管理、查询计划和查询调度。>3节点。BE:节点负责数据存储和SQL执行。>3节点。CN:无存储功能能的BE。环境准备CPU检查JDK...

在CentOS上添加swap虚拟内存并设置优先级

现如今很多云服务器都会自己配置好虚拟内存,当然也有很多没有配置虚拟内存的,虚拟内存可以让我们的低配服务器使用更多的内存,可以减少很多硬件成本,比如我们运行很多服务的时候,内存常常会满,当配置了虚拟内存...

国产深度(deepin)操作系统优化指南

1.升级内核随着deepin版本的更新,会自动升级系统内核,但是我们依旧可以通过命令行手动升级内核,以获取更好的性能和更多的硬件支持。具体操作:-添加PPAs使用以下命令添加PPAs:```...

postgresql-15.4 多节点主从(读写分离)

1、下载软件[root@TX-CN-PostgreSQL01-252software]#wgethttps://ftp.postgresql.org/pub/source/v15.4/postg...

Docker 容器 Java 服务内存与 GC 优化实施方案

一、设置Docker容器内存限制(生产环境建议)1.查看宿主机可用内存bashfree-h#示例输出(假设宿主机剩余16GB可用内存)#Mem:64G...

虚拟内存设置、解决linux内存不够问题

虚拟内存设置(解决linux内存不够情况)背景介绍  Memory指机器物理内存,读写速度低于CPU一个量级,但是高于磁盘不止一个量级。所以,程序和数据如果在内存的话,会有非常快的读写速度。但是,内存...

Elasticsearch性能调优(5):服务器配置选择

在选择elasticsearch服务器时,要尽可能地选择与当前业务量相匹配的服务器。如果服务器配置太低,则意味着需要更多的节点来满足需求,一个集群的节点太多时会增加集群管理的成本。如果服务器配置太高,...

Es如何落地

一、配置准备节点类型CPU内存硬盘网络机器数操作系统data节点16C64G2000G本地SSD所有es同一可用区3(ecs)Centos7master节点2C8G200G云SSD所有es同一可用区...

针对Linux内存管理知识学习总结

现在的服务器大部分都是运行在Linux上面的,所以,作为一个程序员有必要简单地了解一下系统是如何运行的。对于内存部分需要知道:地址映射内存管理的方式缺页异常先来看一些基本的知识,在进程看来,内存分为内...

MySQL进阶之性能优化

概述MySQL的性能优化,包括了服务器硬件优化、操作系统的优化、MySQL数据库配置优化、数据库表设计的优化、SQL语句优化等5个方面的优化。在进行优化之前,需要先掌握性能分析的思路和方法,找出问题,...

Linux Cgroups(Control Groups)原理

LinuxCgroups(ControlGroups)是内核提供的资源分配、限制和监控机制,通过层级化进程分组实现资源的精细化控制。以下从核心原理、操作示例和版本演进三方面详细分析:一、核心原理与...

linux 常用性能优化参数及理解

1.优化内核相关参数配置文件/etc/sysctl.conf配置方法直接将参数添加进文件每条一行.sysctl-a可以查看默认配置sysctl-p执行并检测是否有错误例如设置错了参数:[roo...

如何在 Linux 中使用 Sysctl 命令?

sysctl是一个用于配置和查询Linux内核参数的命令行工具。它通过与/proc/sys虚拟文件系统交互,允许用户在运行时动态修改内核参数。这些参数控制着系统的各种行为,包括网络设置、文件...

取消回复欢迎 发表评论: