蓝桉云顶

Good Luck To You!

RDS for MySQL中的约束与限制有哪些?

MySQL约束用于定义数据库表中数据的规则,确保数据的完整性和准确性。

在云数据库RDS for MySQL的使用过程中,有一些特定的约束与限制需要用户了解和遵守,以下将详细阐述这些约束与限制,并提供相关表格以便于参考。

RDS for MySQL的约束与限制

功能限制

功能 使用限制
数据库访问 如果云数据库RDS实例没开通公网访问,则该实例必须与弹性云服务器在同一个虚拟私有云内才能访问。
云数据库RDS只读实例必须创建在与主实例相同的一个子网内。
弹性云服务器必须处于目标云数据库RDS实例所属安全组允许访问的范围内。
如果云数据库RDS实例与弹性云服务器处于不同的安全组,系统默认不能访问,需要在云数据库RDS的安全组添加一条“入”的访问规则。
RDS for MySQL实例的默认端口为3306,需用户手动修改端口号后,才能访问其它端口。
部署 实例所部署的弹性云服务器,对用户都不可见,即只允许应用程序通过IP地址和端口访问数据库。
跨AZ高可用 主备实例支持跨AZ高可用,选择主可用区和备可用区不在同一个可用区(AZ)。
数据库的root权限 创建实例页面只提供管理员root用户权限,更多权限,请参见表15-14。
建议用户谨慎对root账号执行revoke、drop user、rename user操作,避免影响业务正常使用。
修改数据库参数设置 大部分数据库参数可以通过控制台进行修改。
数据迁入 具体请参考云数据库RDS用户指南中“RDS for MySQL用户指南 > 数据迁移 > 使用mysqldump迁移RDS for MySQL数据”的章节。
RDS for MySQL存储引擎 支持InnoDB存储引擎,不支持MyISAM引擎、FEDERATED引擎和Memory引擎。
搭建数据库复制 RDS for MySQL本身提供主备复制架构的双节点集群,无需用户手动搭建,其中主备复制架构集群的备实例不对用户开放,用户应用不可直接访问。
支持的表数量 RDS for MySQL支持表数量上限为50万,大于50万张表时,会导致备份和小版本升级失败,影响数据库可用性。
重启RDS实例 无法通过命令行重启,必须通过云数据库RDS服务的管理控制台操作重启实例。
查看RDS备份 具体请参考云数据库RDS用户指南中“RDS for MySQL用户指南 > 数据备份 > 下载全量备份文件”的章节。
SQL规范 不支持ZEROFILL属性。

root账户权限

权限 权限级别 描述 是否支持
Select 查询权限 支持
Insert 插入权限 支持
Update 更新权限 支持
Delete 删除权限 支持
Create 数据库、表或索引 创建数据库、表或索引权限 支持
Drop 数据库或表 删除数据库或表权限 支持
Reload 服务器管理 执行flush-hosts、flush-logs、flush-privileges、flush-status、flush-tables、flush-threads、refresh、reload等命令的权限。 支持
Process 服务器管理 查看进程权限 支持
Grant 数据库、表或保存的程序 赋予控制访问权限 支持
References 数据库或表 操作外键权限 支持
Index 索引权限 支持
Alter 更改表,比如添加字段、索引等 支持
Show_db 服务器管理 查看数据库链接 支持
Create_tmp_table 服务器管理 创建临时表权限 支持
Lock_tables 服务器管理 锁表权限 支持
Execute 存储过程 执行存储过程权限 支持
Repl_slave 服务器管理 复制权限 支持
Repl_client 服务器管理 复制权限 支持
Create_view 视图 创建视图权限 支持
Show_view 视图 查看视图权限 支持
Create_routine 存储过程 创建存储过程权限 支持
Alter_routine 存储过程 更改存储过程权限 支持
Create_user 服务器管理 创建用户权限 支持
Event 数据库 事件触发器 支持
Trigger 数据库 触发器 支持
Super 服务器管理 执行kill线程权限 不支持
File 服务器上的文件访问 访问数据库服务器节点文件权限 不支持
Shutdown 服务器管理 关闭数据库权限 不支持
Create_tablespace 服务器管理 创建表空间权限 不支持

规格与性能限制

| 存储空间大小 | SSD本地盘:最大6000 GB<br/>SSD云盘:最大6000 GB<br/>ESSD云盘:最大64000 GB | 不同规格的存储空间上限不同,更多信息,请参见主实例规格列表。 |

| 临时表空间大小 | SSD本地盘:最大300 GB<br/>云盘:无限制 | SSD本地盘的最大临时表空间为300 GB,超出300 GB会导致实例频繁高可用切换、宕机等问题。 |

| 连接数 | 最大100,000 | 不同实例规格的连接数上限不同,更多信息,请参见主实例规格列表。 |

| IOPS | SSD本地盘:最大144000<br/>云盘:请参见关于云盘IOPS | 无 |

| 内存大小 | SSD本地盘:最大720 GB<br/>云盘:最大768 GB | RDS MySQL云盘实例的底层操作系统,以及RDS相关管理服务会占用一部分内存,因此实例实际可用的内存不会达到规格显示的内存大小。<br/>占用内存明细:<br/>底层操作系统:约500~700 MB。<br/>RDS相关管理服务:约500 MB。 |

| JSON字段 | 可存储的最大数据量为4 GB | 无 |

配额限制

配额类型 限制说明
只读实例数量 最多创建10个只读实例,只读实例的更多信息,请参见MySQL只读实例简介。
主实例数量 按量付费、Serverless主实例数量限制为200个,您可以前往配额中心申请提升配额。
标签键数量 标签键必须唯一,最大设置20个,每次最多设置50个实例进行批量标签绑定,创建标签,请参见创建标签。
备份空间免费额度 本地盘备份空间免费额度:50%×实例购买的存储空间。
云盘备份空间免费额度:200%×实例购买的存储空间。
超出免费额度的部分 = 数据备份量 + 日志备份量 免费额度,单位为GB,只入不舍,备份的更多信息,请参见备份费用。
实例备份保留天数 默认为7天,最大730天,超过730天的数据备份为归档备份,会收取较低的归档备份费用,更多信息,请参见备份费用。
日志保留天数 错误日志:30天
慢日志明细:7天
慢日志统计:7天
主备切换日志:30天
更多信息,请参见查看错误日志和慢日志。

命名限制

限制项 限制说明
实例名 长度为2~255个字符。
由大小写字母、中文、数字、下划线(_)或短横线(-)组成。
以大小写字母或中文开头。
账号名 MySQL 8.0或5.7的账号长度为2~32个字符,MySQL 5.6的账号长度为2~16个字符。
由小写字母、数字或下划线(_)组成。
以小写字母开头,以小写字母或数字结尾。
不能和已有的账号名重复。
不能使用SQL关键字,更多信息,请参见SQL关键字。
数据库名 长度不超过64个字符。
由小写字母、数字、下划线(_)或短横线(-)组成。
以小写字母开头,以小写字母或数字结尾。
不能和已有的数据库名重复。
不能使用SQL关键字,更多信息,请参见SQL关键字。
自定义函数名 避免使用保留关键字。

SQL规范限制

SQL规范限制项 限制说明
ZEROFILL属性 不支持ZEROFILL属性。

FAQS相关问题及解答

Q1:如何修改MySQL数据库中的约束?

A1:在MySQL数据库中,修改约束主要涉及对表结构的更改,这通常通过使用ALTER TABLE语句来完成,以下是一些具体的步骤:

1、查看现有表结构:在做出任何修改之前,首先要了解现有的表结构,可以通过SQL命令DESC table_name来查看表的详细信息,包括已有的约束。

   DESC your_table_name;

2、添加列约束:若要在表中新增一个列并设置约束,可以使用以下语法:

   ALTER TABLE your_table_name ADD COLUMN column_name data_type [constraint];

添加一个非空的唯一约束:

   ALTER TABLE your_table_name ADD COLUMN new_column_name varchar(255) NOT NULL UNIQUE;

3、删除和修改列约束:对于已存在的列,可能需要修改或删除其约束,以下是一些操作实例:

删除主键:ALTER TABLE your_table_name DROP PRIMARY KEY;

删除非空约束:ALTER TABLE your_table_name MODIFY column_name data_type NULL;

删除外键:ALTER TABLE your_table_name DROP FOREIGN KEY fk_name;

4、添加新的约束:若需要添加新的约束,可以使用ADD CONSTRAINT语句,例如添加一个外键约束:

   ALTER TABLE your_table_name ADD CONSTRAINT fk_name FOREIGN KEY (column_name) REFERENCES another_table(corresponding_column);

5、保存并应用修改:每次使用ALTER TABLE语句后,修改会被立即保存到数据库中,确保在执行每一步后检查修改是否符合预期,以防不必要时的数据丢失或错误。

正确理解和使用这些语句是确保数据库完整性和数据准确性的关键,通过上述步骤,可以有效地管理和控制数据库中的约束,从而维护数据的完整性和一致性,是否可以在不删除的情况下修改列的约束?是的,MySQL允许在不删除列的情况下直接修改其约束,可以将一个列从非空约束修改为可空,或反之,通过使用ALTER TABLE语句配合MODIFY关键字来实现,这样做可以避免因删除列而丢失数据的风险,修改约束是否会影响表中的数据?可能会影响,修改约束,特别是添加如UNIQUE或FOREIGNKEY这样的约束,如果表中已存在的数据违反了新约束条件,操作将会失败,在添加此类约束前,应先审核现有数据以确保符合约束条件,或先对数据进行必要的调整。

Q2:是否可以在不删除的情况下修改列的约束?

A2:是的,MySQL允许在不删除列的情况下直接修改其约束,可以将一个列从非空约束修改为可空,或反之,通过使用ALTER TABLE语句配合MODIFY关键字来实现,这样做可以避免因删除列而丢失数据的风险。

  •  忧愁
     发布于 2024-02-10 23:15:30  回复该评论
  • 通过Java代码启动cmd,实现对操作系统的底层控制,这对于开发者来说是一个强大的工具。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接