华为云用户手册

  • 操作场景 内网连接RDS实例时,设置安全组分为以下两种情况: E CS 与RDS实例在相同安全组时,默认ECS与RDS实例互通,无需设置安全组规则,执行通过内网连接RDS for MariaDB实例。 ECS与RDS实例在不同安全组时,需要为RDS和ECS分别设置安全组规则。 设置RDS安全组规则:为RDS所在安全组配置相应的入方向规则。 设置ECS安全组规则:安全组默认规则为出方向上数据报文全部放行,此时,无需对ECS配置安全组规则。当在ECS所在安全组为非默认安全组且出方向规则非全放通时,需要为ECS所在安全组配置相应的出方向规则。 关于添加安全组规则的详细要求,可参考《虚拟私有云用户指南》的“添加安全组规则”章节。
  • 使用限制 因为安全组的默认规则是在出方向上的数据报文全部放行,同一个安全组内的弹性云服务器和云数据库RDS实例可互相访问。安全组创建后,您可以在安全组中定义各种访问规则,当云数据库RDS实例加入该安全组后,即受到这些访问规则的保护。 默认情况下,一个用户可以创建100个安全组。 默认情况下,一个安全组最多只允许拥有50条安全组规则。 目前一个RDS实例仅允许绑定一个安全组,但一个安全组可以关联多个RDS实例。 为一个安全组设置过多的安全组规则会增加首包延时,因此,建议一个安全组内的安全组规则不超过50条。 当需要从安全组外访问安全组内的云数据库RDS实例时,需要为安全组添加相应的入方向规则。 为了保证数据及实例安全,请合理使用权限。建议使用最小权限访问,并及时修改数据库默认端口号(3306),同时将可访问IP地址设置为远程主机地址或远程主机所在的最小子网地址,限制远程主机的访问范围。 源地址默认的IP地址0.0.0.0/0是指允许所有IP地址访问安全组内的云数据库RDS实例。
  • 操作场景 您可以复制您创建的自定义数据库参数模板。当您已创建一个数据库参数模板,并且想在新的数据库参数模板中包含该组中的大部分自定义参数和值时,复制参数模板是一个方便的解决方案。您还可以导出某数据库实例应用的参数列表,生成一个新的参数模板,供您后期使用。 复制数据库参数模板之后,新参数模板可能不会立即显示,建议您等待5分钟再使用。 您无法复制默认参数模板。不过,您可以创建基于默认参数模板的新参数模板。
  • 注意事项 您可以修改用户创建的数据库参数模板中的参数值,但不能更改默认数据库参数模板中的参数值。 在配置数据库参数模板中的参数时需要注意以下几点: 当您修改当前实例的参数模板并保存后,仅应用于当前实例,不会对其他实例造成影响。 如果您单击实例名称,在“参数修改”页面修改当前实例的参数模板,更改动态参数并保存数据库参数模板时,系统将立即应用更改,而不管“应用”设置如何。当您更改静态参数并保存数据库参数模板时,参数更改将在您手动重启该数据库实例后生效。 当您在“参数管理”页面,修改自定义参数模板时,需执行“应用”操作,才会对实例生效。当您更改静态参数并保存数据库参数模板时,参数更改将在您应用到实例后,手动重启与数据库参数模板关联的数据库实例后生效。应用参数模板到数据库实例,请参见应用参数模板。 在数据库参数模板内设置参数不恰当可能会产生意外的不利影响,包括性能降低和系统不稳定。修改数据库参数时应始终保持谨慎,且修改数据库参数模板前要备份数据。将参数模板更改应用于生产数据库实例前,您应当在测试数据库实例上试用这些参数模板设置更改。 全局参数必须通过控制台修改,会话级参数可通过SQL修改。如果您更改一个参数值,则所做更改的应用时间将由该参数的类型决定。 云数据库 RDS for MariaDB服务的管理控制台显示与数据库参数模板关联的数据库实例状态。例如,如果数据库实例未使用对其关联的数据库参数模板所做的最新更改,则云数据库 RDS for MariaDB服务的管理控制台将显示状态为“等待重启”的数据库实例。您将需要手动重启数据库实例,以使最新的参数更改对该数据库实例生效。 系统提供的默认参数模板不允许修改,只可单击参数模板名进行查看。当用户参数设置不合理导致数据库无法启动时,可参考默认参数模板重新配置。
  • 注意事项 并非所有数据库引擎参数都可在客户创建的数据库参数模板中进行更改。 如果您想使用您自己的数据库参数模板,只需创建一个新的数据库参数模板,创建实例的时候选择该参数模板,如果是在创建实例后有这个需求,可以重新应用该参数模板,请参见应用参数模板。 如果您已成功创建数据库参数模板,并且想在新的数据库参数模板中包含该组中的大部分自定义参数和值时,复制参数模板是一个方便的解决方案,请参见复制参数模板。 云数据库 RDS for MariaDB和文档数据库服务不共享参数模板配额。每个用户最多可以创建100个云数据库 RDS for MariaDB参数模板,各云数据库 RDS for MariaDB引擎共享该配额。
  • 备份清理 备份文件清理分为两种场景:手动备份清理和自动备份清理。 手动备份是由用户触发产生的全量备份,需要用户手动删除,否则会一直保存。 自动备份的备份文件不支持手动删除,可通过设置同区域备份策略调整备份保留天数,超出备份保留天数的已有备份文件会被自动删除。 Binlog本地日志清理: 清理Binlog日志时,即使设置保留时长为0,RDS也会保证主节点的Binlog同步到备节点、只读节点全部完成,并且备份到OBS成功以后才会执行清理。 如果选择的保留时长大于0,例如设置1天,那么在Binlog同步及备份成功后,本地Binlog日志将会继续保留1天,到期后自动删除。
  • 备份方案 RDS的备份方案请参见表1。 表1 备份方案 任务类型 备份类型 使用场景 数据备份 自动备份 RDS会在数据库实例的备份时段中创建数据库实例的自动备份,自动备份为全量备份。系统根据您指定的备份保留期保存数据库实例的自动备份。如果需要,您可以将数据恢复到备份保留期中的任意时间点。 开启自动备份策略后,会自动触发一次全量备份,备份方式为物理备份。之后会按照策略中的备份时间段和备份周期进行全量备份。自动备份策略开启后,实例每五分钟会自动进行一次增量备份,以保证数据库可靠性。 手动备份 手动备份是由用户启动的数据库实例的全量备份,备份方式为物理备份。手动备份会一直保存,不会随着RDS实例的删除而释放,直到用户手动删除。 增量备份 增量备份即Binlog备份,RDS for MariaDB默认自动开启。 在进行全量备份的同时系统每五分钟会自动生成增量备份,用户不需要设置。生成的增量备份可以用来将数据恢复到指定时间点。 下载备份文件 下载全量备份文件 包含使用OBS Browser+下载、直接浏览器下载、按地址下载三种方式。 下载增量备份文件 支持下载单个Binlog文件,或者合并下载Binlog文件。 合并下载Binlog文件包含使用OBS Browser+下载、直接浏览器下载、按地址下载三种方式。
  • 备份原理 单机实例 采用单个数据库节点部署架构。与主流的主备实例相比,它只包含一个节点,但具有高性价比。备份触发后,从主库备份数据并以压缩包的形式存储在 对象存储服务 上,不会占用实例的磁盘空间。 主备实例 采用一主一备的经典高可用架构,主备实例的每个节点的规格保持一致。备份触发后,从备库备份数据并以压缩包的形式存储在对象存储服务上,不会占用实例的磁盘空间。 当数据库或表被恶意或误删除,虽然RDS支持HA高可用,但备库会被同步删除且无法还原。因此,数据被删除后只能依赖于实例的备份保障数据安全。
  • 功能限制 1个主实例最多可以创建5个只读实例。如果需要更多只读实例请提交工单申请,最多可以创建10个只读实例。 暂不支持包年/包月计费方式。 不支持单独购买只读实例,需要购买主实例后才能购买只读实例。 主实例、备实例及只读实例的数据都是一致的,暂不支持过滤库或者表不同步。 备份设置:不支持自动备份设置以及手动备份。 实例恢复:不支持通过备份文件或任意时间点创建只读实例,不支持通过备份集覆盖只读实例。 数据迁移:不支持将数据迁移至只读实例。 数据库管理:不支持创建和删除数据库。 账号管理:只读实例不提供创建账号权限。请在主实例上创建,请参见创建数据库账号。 回收站:不支持加入回收站管理。
  • 功能介绍 目前,云数据库RDS for MariaDB实例支持只读实例。 在对数据库有少量写请求,但有大量读请求的应用场景下,单个实例可能无法抵抗读取压力,甚至对主业务产生影响。为了实现读取能力的弹性扩展,分担数据库压力,您可以在某个区域中创建一个或多个只读实例,利用只读实例满足大量的数据库读取需求,以此增加应用的吞吐量。 只读实例为单个物理节点的架构(没有备节点),采用MariaDB的原生复制功能,将主实例的更改同步到所有只读实例,而且主实例和只读实例之间的数据同步不受网络延时的影响。只读实例跟主实例在同一区域,但可以在不同的可用区。
  • 操作场景 随着业务数据的增加,原来申请的数据库磁盘容量可能会不足,需要为云数据库 RDS for MariaDB实例进行扩容。实例扩容的同时备份空间也会随之扩大。 当实例处于“磁盘空间满”状态时,需扩容至磁盘空间使用率小于87%才可使实例处于可用状态,使数据库恢复正常的写入操作。 建议您设置“磁盘使用率”指标的告警规则,及时了解磁盘使用情况,起到预警作用,具体请参见设置告警规则。 磁盘扩容期间,服务不中断。云数据库 RDS for MariaDB服务只支持扩容磁盘存储空间大小,不支持变更存储类型。
  • 约束限制 账户余额大于等于0元,才可进行扩容。 实例状态为“正常”和“存储空间满”时可以进行扩容。 云数据库 RDS for MariaDB实例SSD盘的最大扩容容量与所选实例规格有关,其他存储类型的磁盘最大可扩容至4000GB(如果您想提高存储空间扩容上限到10TB,请提交工单申请),扩容次数没有限制。 磁盘扩容期间,实例状态为“扩容中”备份业务不受影响。 如果是主备实例,针对主实例扩容时,会同时对其备实例进行扩容。 磁盘扩容的过程中,不需要重启数据库实例。 扩容过程中,该实例不可重启和删除。 磁盘容量变更只允许扩容,不能缩容。 选择磁盘加密的实例,新扩容的磁盘空间依然会使用原加密密钥进行加密。
  • 约束限制 账户余额大于等于0元,才可变更规格。 当实例进行CPU/内存规格变更时,该实例不可被删除。 当实例进行CPU/内存规格变更时,不能对该实例做如下操作:重启数据库、扩容磁盘、修改参数组、创建手动备份、创建数据库账号、创建数据库等。 RDS for MariaDB实例支持规格升配,也支持降配。 变更过程中若存在大事务,可能导致变更失败。 如果实例的主备同步延迟大于5分钟,下发规格变更操作会失败。 变更规格会导致业务中断,请确保您的应用有自动重连机制。请在业务低峰期变更规格,在业务高峰期执行会导致变更时长变长。 变更规格所需的时间(非业务高峰期)需要5~15分钟。超过变更时长,请提交工单处理。
  • 操作场景 云数据库 RDS for MariaDB服务支持切换主备实例的数据同步方式,以满足不同业务需求。可选择 “异步”或者“半同步”两种方式。 异步: 应用更新数据时,主库执行完操作后立即向应用返回响应,通常具有较高的性能。 半同步(默认选择): 应用更新数据时,主库需要等待备库收到日志才向应用返回响应,对性能有影响。 半同步方式下,如果备库异常,会导致主库等待备库响应数秒钟,在此期间会阻塞主库对业务写操作的响应,直至出现下列场景: 如果备库恢复正常,则主库恢复对业务写操作的响应。 如果备库等待时间段内没有恢复正常,实例会自动切换为异步方式,切换完毕后主库恢复对写操作的响应。
  • 约束限制 正在执行操作的实例不能手动删除,只有在实例操作完成后,才可删除实例。 支持批量删除按需计费的实例,最多可以删除50个。 “按需计费”类型的实例删除后将不再产生费用,实例生成的自动备份会被同步删除,保留的手动备份会继续收取费用。 删除主实例时,会同步删除其对应的备实例和只读实例,请您谨慎操作。 实例删除后,资源立即释放,请谨慎操作。如需保留数据,请务必确认完成数据备份后再删除实例。 通过保留的手动备份,可以恢复实例数据,具体请参见通过备份文件恢复全量数据。
  • RDS自定义策略样例 示例1:授权用户创建RDS实例 { "Version": "1.1", "Statement": [{ "Effect": "Allow", "Action": ["rds:instance:create"] }] } 示例2:拒绝用户删除RDS实例 拒绝策略需要同时配合其他策略使用,否则没有实际作用。用户被授予的策略中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先。 如果您给用户授予RDS FullAccess的系统策略,但不希望用户拥有RDS FullAccess中定义的删除RDS实例,您可以创建一条拒绝删除云服务的自定义策略,然后同时将RDS FullAccess和拒绝策略授予用户,根据Deny优先原则,则用户可以对RDS实例执行除了删除RDS实例外的所有操作。拒绝策略示例如下: { "Version": "1.1", "Statement": [{ "Action": ["rds:instance:delete"], "Effect": "Deny" }] }
  • 操作流程 图1 给用户授权RDS权限流程 创建用户组并授权 在 IAM 控制台创建用户组,并授予关系型数据库只读权限“RDS ReadOnlyAccess”。 如果需要使用到对接其他服务的一些功能时,除了需要配置“RDS ReadOnlyAccess”权限外,还需要配置对应服务的权限。 例如:使用控制台连接实例时,除了需要配置“RDS ReadOnlyAccess”权限外,您还需要配置数据管理服务“DAS FullAccess”权限后,才可正常使用控制台登录数据库实例。 创建用户并加入用户组 在IAM控制台创建用户,并将其加入1中创建的用户组。 用户登录并验证权限 新创建的用户登录控制台,切换至授权区域,验证权限: 在“服务列表”中选择云数据库 RDS for MariaDB,进入RDS主界面,单击右上角“购买关系型数据库”,尝试购买关系型数据库,如果无法购买关系型数据库(假设当前权限仅包含RDS ReadOnlyAccess),表示“RDS ReadOnlyAccess”已生效。 在“服务列表”中选择除云数据库 RDS for MariaDB外(假设当前策略仅包含RDS ReadOnlyAccess)的任一服务,若提示权限不足,表示“RDS ReadOnlyAccess”已生效。
  • 定时任务 原因及现象 如果实例负载随时间有规律性变化,可能是存在定时任务。 您可以在控制台查看实例的Delete语句执行频率、Insert语句执行频率、Insert_Select语句执行频率、Replace语句执行频率、Replace_Selection语句执行频率、Select语句执行频率、Update语句执行频率等指标,判断是否有规律性变化。具体操作,请参见查看监控指标。 解决方案 调整定时任务的执行时间,建议在业务低峰期执行。
  • 实例瓶颈 原因及现象 实例到达瓶颈的原因一般有如下几种: 业务量持续增长而没有扩容。 硬件老化,性能有损耗。 数据量一直增加,数据结构也有变化,导致原来不慢的SQL变成慢SQL。 您可以在控制台查看实例的资源使用情况。如果资源使用率各项指标都接近100%,可能是实例到达了瓶颈。具体操作,请参见查看实例运行情况。 解决方案 确认实例到达瓶颈后,建议升级实例规格。具体操作,请参见变更实例的CPU和内存规格。
  • 解决方案 随着业务数据的增加,原来申请的数据库磁盘容量可能会不足,建议用户手动扩容磁盘,确保磁盘空间足够。 您可以通过智能DBA助手查看实例的内存使用情况,具体请参见查看磁盘空间。 如果原有规格的磁盘已是最大的,请先升级规格。 请参见变更实例的CPU和内存规格。 请及时处理过期数据文件。 您可以在控制台查看监控数据库CPU、内存、磁盘、连接数等指标,并且设置告警策略,出现告警时可以提前识别风险。 请参见查看实例运行情况。
  • RDS for MariaDB数据库内存使用率过高怎么处理 对于用户核心业务相关的库 请扩容实例规格。 对于非用户核心业务相关的库 查看本地计算机的内存使用率,如果使用率曲线持续平缓,则无需处理。 对于用户核心业务相关但是数据库规格配置很高的库 在业务低峰期,将数据库参数“performance_schema”的值调整为“OFF”,需要重启数据库才能生效。 通过智能DBA助手查看实例的内存使用情况,具体请参见查看性能指标。 如果实例的空间使用率仍持续保持较高: 请扩容实例规格。 调整数据库参数“innodb_buffer_pool_size”的值: 数据库实例为2GB规格,参考值268,435,456 Byte(256MB)。 数据库实例为4GB规格,参考值1,073,741,824 Byte(1GB)。 数据库实例为8GB规格,参考值3,221,225,472 Byte(3GB)。 数据库实例内存大于8GB规格,则无需调整。 请根据业务实际情况,调整参数“innodb_buffer_pool_size”的值。 MariaDB本身具有内存动态平衡机制,90%以下您可无需关注。 RDS for MariaDB的内存分配可划分为Engine层与Server层。 Engine层的内存包括InnoDB Buffer Pool、Log Buffer、Full Text Index Cache,其中InnoDB Buffer Pool为常驻内存,占用内存较大。 InnoDB缓冲池是一个内存区域,用于保存InnoDB表、索引和其他辅助缓冲区的缓存数据,可以通过参数“innodb_buffer_pool_size”定义缓冲池大小。 Server层的内存占用较高的包括Thread Cache、BinLog Cache、Sort Buffer、Read Buffer、Join Buffer等线程缓存,这类缓存非常驻内存,往往会随着连接关闭而释放。 以上内存的分配导致RDS for MariaDB实例运行时内存使用率在80%左右。 父主题: 常见性能问题
  • 解决方法 分析慢SQL日志以及CPU使用率指标来定位效率低的查询,再优化查询效率低的语句。 查看慢SQL日志来确定是否存在运行缓慢的SQL查询以及各个查询的性能特征(如果有),从而定位查询运行缓慢的原因。 查询RDS for MariaDB日志,请参见查看或下载慢日志。 查看数据库实例的CPU使用率指标,协助定位问题。 请参见查看监控指标。 创建只读实例专门负责查询。减轻主实例负载,分担数据库压力。 多表关联查询时,关联字段要加上索引。 尽量避免用select*语句进行全表扫描,可以指定字段或者添加where条件。
  • 如何提高RDS数据库的查询速度 可以参考如下建议: 如果产生了慢日志,可以通过查看慢日志来确定是否存在运行缓慢的SQL查询,以及各个查询的性能特征,从而定位查询运行缓慢的原因。查询RDS for MariaDB日志,请参见查看或下载慢日志。 查看云数据库 RDS for MariaDB的CPU使用率指标,协助定位问题。具体请参见查看监控指标。 可以创建只读实例专门负责查询,减轻主实例负载,分担数据库压力。 如果是实例规格较小但负载过高,您可以提高CPU/内存规格,具体请参见变更实例的CPU和内存规格。 多表关联查询时,关联字段要加上索引。 可以指定字段或者添加where条件进行查询,避免用select*语句进行全表扫描。 父主题: 常见性能问题
  • RDS支持的最大IOPS是多少 华为云关系型数据库服务支持的IOPS取决于云硬盘(Elastic Volume Service,简称EVS)的IO性能,具体请参见《云硬盘产品介绍》中“磁盘类型及性能介绍”的内容。 RDS for MariaDB本地SSD盘的IOPS如下: 表1 x86通用型规格对应的IOPS vCPU 内存(GB) 读IOPS 写IOPS 2 4 2000 2000 2 8 4000 4000 4 8 5000 5000 4 16 7000 7000 8 16 8000 8000 8 32 12000 12000 16 64 14000 14000 表2 独享型规格对应的IOPS vCPU 内存(GB) 读IOPS 写IOPS 4 16 4500 4500 4 32 9000 9000 8 32 9000 9000 8 64 18000 18000 16 64 18000 18000 16 128 36000 36000 32 128 36000 36000 32 256 72000 72000 64 512 144000 144000 父主题: 常见性能问题
  • 前提条件 绑定弹性公网IP并设置安全组规则。 对目标实例绑定弹性公网IP。 获取弹性云服务器的IP地址。 设置安全组规则。 将1.b中获取的IP地址及目标实例的端口加入安全组允许访问的范围中。 使用ping命令连通1.a中绑定的弹性公网IP,确保弹性云服务器可以访问该弹性公网IP。 使用客户端连接实例。 在Linux操作系统中,您需要在您的设备上安装MariaDB客户端。建议您下载的MariaDB客户端版本高于已创建的RDS实例中数据库版本。
  • 前提条件 登录弹性云服务器。 创建并登录弹性云服务器,请参见《弹性云服务器快速入门》中“购买弹性云服务器”和“登录弹性云服务器”。 通过弹性云服务器连接云数据库 RDS for MariaDB实例,需要具备以下条件。 该弹性云服务器与目标实例必须处于同一VPC内。 该弹性云服务器必须处于目标实例所属安全组允许访问的范围内。 如果目标实例所属安全组为默认安全组, 则无需设置安全组规则。 如果目标实例所属安全组非默认安全组,请查看安全组规则是否允许该弹性云服务器访问。 如果安全组规则允许弹性云服务器访问,即可连接实例。 如果安全组规则不允许弹性云服务器访问,则需添加安全组规则。该弹性云服务器必须处于目标实例所属安全组允许访问的范围内。 使用客户端连接实例。 在Linux操作系统中,您需要在可访问云数据库 RDS for MariaDB的设备上安装MariaDB客户端。建议您下载的MariaDB客户端版本高于已创建的RDS实例中数据库版本。
  • 连接RDS for MariaDB实例的方式概述 云数据库RDS for MariaDB提供使用MySQL命令行、JDBC和数据管理服务(Data Admin Service,简称DAS)的连接方式。 表1 RDS连接方式 连接方式 使用场景 通过MySQL命令行客户端连接实例 在Linux操作系统中,您需要在您的设备上安装MariaDB客户端,通过MySQL命令行连接实例。支持公网和内网两种连接方式: 系统默认提供内网IP地址。 当应用部署在弹性云服务器上,且该弹性云服务器与RDS for MariaDB实例处于同一区域,同一VPC时,建议单独使用内网IP连接弹性云服务器与RDS for MariaDB实例。 不能通过内网IP地址访问RDS for MariaDB实例时,使用公网访问,建议单独绑定弹性公网IP连接弹性云服务器(或公网主机)与RDS for MariaDB实例。 通过JDBC连接RDS for MariaDB实例 通过JDBC连接实例的方式包括两种:无需下载SSL证书和需下载SSL证书。使用SSL证书连接通过了加密功能,具有更高的安全性。RDS for MariaDB新实例默认关闭SSL 数据加密 ,开启SSL请参考设置SSL数据加密。SSL连接实现了数据加密功能,但同时也会增加网络连接响应时间和CPU消耗,不建议开启SSL数据加密。 通过DAS连接RDS for MariaDB实例(推荐) 通过DAS这款可视化的专业数据库管理工具,可获得执行SQL、高级数据库管理、智能化运维等功能,做到易用、安全、智能地管理数据库。云数据库RDS服务默认开通DAS连接权限。 父主题: 连接RDS for MariaDB实例
  • 数据库基本设计规范 所有表如果没有特殊需求,都要使用InnoDB存储引擎。InnoDB存储引擎支持事务、行级锁、具有更好的恢复性、高并发下性能更强。 数据库和表的字符集统一使用UTF8字符集,避免由于字符集的转换产生乱码。 所有的表和字段都需要添加注释。使用comment从句添加表和列的备注,从设计初期维护好数据字典。 谨慎使用RDS for MariaDB分区表,避免跨分区查询,否则查询效率会降低。分区表在逻辑上表现为一个表,但是在物理层面上将数据存储在多个文件。建议尽可能将分区表的不同分区文件存储在不同的磁盘阵列上。 表中的列不要太多,尽量做到冷热数据分离,减小表的宽度,以便在一页内存中容纳更多的行,进而减少磁盘IO,更有效的利用缓存。 经常一起使用的列尽量放到一个表中,避免过多的关联操作。 禁止在表中建立预留字段,否则修改列的类型会导致锁表,修改一个字段类型的成本要高于增加一个字段。 禁止在数据库中存储图片、文件等大的二进制数据。
  • 数据库索引设计规范 限制每张表上的索引数量,建议单张表索引不超过5个。索引并不是越多越好,索引可以提高查询的效率,但会降低写数据的效率。有时不恰当的索引还会降低查询的效率。 禁止给表中的每一列都建立单独的索引。设计良好的联合索引比每一列上的单独索引效率要高出很多。 每个InnoDB表强烈建议有一个主键,且不使用更新频繁的列作为主键,不使用多列主键,不使用UUID、MD5、字符串列作为主键。最好选择值的顺序是连续增长的列作为主键,所以建议选择使用自增ID列作为主键。 建议在下面的列上建立索引: 在SELECT,UPDATE,DELETE语句的WHERE从句上的列。 在ORDER BY,GROUP BY,DISTINCT上的列。 多表JOIN的关联列。 索引列顺序: 区分度最高的列放在联合索引的最左侧。区分度=列中不同值的数量/列的总行数。 尽量把字段长度小的列放在联合索引的最左侧。因为字段长度越小,一页能存储的数据量越大,IO性能也就越好。 使用最频繁的列放到联合索引的左侧。这样可以比较少的建立一些索引。 避免冗余的索引,例如:primary key(id),index(id),unique index(id) 避免重复的索引,例如:index(a,b,c),index(a,b),index(a),由于RDS for MariaDB查询优化器无法确定使用哪个索引,所以重复的和冗余的索引会降低查询效率。 在VARCHAR字段上建立索引时,需指定索引长度,没必要对全字段建立索引,根据实际文本区分度决定索引长度即可。 一般对字符串类型数据,长度为20的索引,区分度会高达90%以上,可以使用 count(distinct left(列名, 索引长度))/count(*) 的区分度来确定。 对于频繁查询优先考虑使用覆盖索引。 覆盖索引指包含了所有查询字段的索引,不仅仅是WHERE从句GROUP BY从句中的列,也包含SELECT查询的列组合,避免InnoDB表进行索引的二次查询。 外键约束: 建立外键关系的对应列的字符集必须保持一致或者存在外键关系的子表父表的字符集保持一致。
  • 数据库命名规范 所有的数据库对象名称(包括库名、表名、列名等)建议以小写字母命名,每个单词之间用下划线分隔。 所有的数据库对象名称禁止使用RDS for MariaDB保留关键字。 数据库对象的命名要能做到见名知意,并且不超过32个字符。 数据库中用到的临时表以“tmp”为前缀并以日期为后缀。 数据库中用到的备份表以“bak”为前缀并以日期为后缀。 在不同的库或表中,要保证所有存储相同数据的列名和列类型必须一致。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全