检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
GaussDB(for MySQL)超大表删除索引有哪些风险 删除索引是一个风险很大的操作,建议非必要不删除索引,主要原因如下: 删除索引会导致使用该索引的查询操作性能下降,慢SQL占满系统资源,影响业务正常运行。 删除索引的过程中会导致表锁定,其他用户无法访问该表,影响系统可用性。 在
possible_keys:指出MySQL能使用哪个索引在表中找到记录,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用。 key:表示MySQL实际决定使用的键(索引),如果没有选择索引,键是NULL。要想强制MySQL使用或忽视possible_keys列中的索引,在查询中使用FORCE
的情况下,InnoDB表的单字段索引的最大字段长度不能超过767字节,联合索引的每个字段的长度不能超过767字节,且所有字段长度合计不能超过3072字节。 当“innodb_large_prefix”设置为on时,单字段索引最大长度可为3072字节,联合索引合计最大长度可为3072字节。
的情况下,InnoDB表的单字段索引的最大字段长度不能超过767字节,联合索引的每个字段的长度不能超过767字节,且所有字段长度合计不能超过3072字节。 当“innodb_large_prefix”设置为on时,单字段索引最大长度可为3072字节,联合索引合计最大长度可为3072字节。
TaurusDB超大表删除索引有哪些风险 删除索引是一个风险很大的操作,建议非必要不删除索引,主要原因如下: 删除索引会导致使用该索引的查询操作性能下降,慢SQL占满系统资源,影响业务正常运行。 删除索引的过程中会导致表锁定,其他用户无法访问该表,影响系统可用性。 在删除索引的过程中,可
allowed”。详见官方文档。 解决方案 MySQL机制导致,建议优化业务,避免单表创建过多索引。 InnoDB表的其他限制: 一个表最多可以包含1017列(包含虚拟生成列)。 InnoDB对于使用DYNAMIC或COMPRESSED行格式的表,索引键前缀长度限制为3072字节。 多列索引最多允许16列,超过限制会报错。
allowed”。详见官方文档。 解决方案 MySQL机制导致,建议优化业务,避免单表创建过多索引。 InnoDB表的其他限制: 一个表最多可以包含1017列(包含虚拟生成列)。 InnoDB对于使用DYNAMIC或COMPRESSED行格式的表,索引键前缀长度限制为3072字节。 多列索引最多允许16列,超过限制会报错。
possible_keys:指出MySQL能使用哪个索引在表中找到记录,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用。 key:表示MySQL实际决定使用的键(索引),如果没有选择索引,键是NULL。要想强制MySQL使用或忽视possible_keys列中的索引,在查询中使用FORCE
其他云MySQL实例准备 前提条件 已购买其他云数据库MySQL实例。 账号权限符合要求,具体见账号权限要求。 账号权限要求 当使用DRS将其他云MySQL数据库的数据迁移到华为云云数据库GaussDB(for MySQL)实例时,在不同迁移类型的情况下,对源数据库的账号权限要求如下:
行数为百万级,当SQL执行慢时其扫描行数为千万级,与业务确认该表短期内并无大量数据插入,因此推断执行慢是因为未走索引或选错索引。且通过EXPLAIN查看该SQL的执行计划确实是全表扫描。 图2 慢日志 在实例上对该表执行SHOW INDEX FROM检查三个字段的基数,。 图3 查看基数
字段,数据类型必须保持一致。 多表关联查询时,保证被关联的字段需要有索引;在多表join中,尽量选取结果集较小的表作为驱动表,用来join其他表。即使双表join也要关注表索引、SQL性能情况。 对于超大表的查询,还需要遵循以下规范。 可通过开启慢查询日志来找出较慢的SQL。 不做列运算:SELECT
时区相关参数 system_time_zone:操作系统时区,不支持修改,对数据库时区没有影响。 time_zone:数据库内部时区,修改该参数可更换不同的时区。 父主题: 数据库参数修改
GaussDB(for MySQL)与RDS for MySQL的区别 GaussDB(for MySQL)拥有较好的性能、扩展性和易用性,详情请参见表1。 表1 GaussDB(for MySQL)与RDS for MySQL的差异 类别 RDS for MySQL GaussDB(for
对于千万或亿级的超大表如何高效写入数据或创建索引 大表高效写入数据的方法 对于千万或亿级大数据量的表,建议使用如下方法提升数据写入效率。 删除不必要的索引。 更新数据时候,同时会更新索引数据。对于大数据量的表,避免创建大量的索引,影响更新速度。请根据业务评估,删除不必要的索引。 插入多条数据时,尽量选择批量插入。
行数为百万级,当SQL执行慢时其扫描行数为千万级,与业务确认该表短期内并无大量数据插入,因此推断执行慢是因为未走索引或选错索引。且通过EXPLAIN查看该SQL的执行计划确实是全表扫描。 图2 慢日志 在实例上对该表执行SHOW INDEX FROM检查三个字段的基数,。 图3 查看基数
对于千万或亿级的超大表如何高效写入数据或创建索引 大表高效写入数据的方法 对于千万或亿级大数据量的表,建议使用如下方法提升数据写入效率。 删除不必要的索引。 更新数据时候,同时会更新索引数据。对于大数据量的表,避免创建大量的索引,影响更新速度。请根据业务评估,删除不必要的索引。 插入多条数据时,尽量选择批量插入。
创建ECS并安装MySQL客户端 请参考创建ECS(MySQL服务器)创建MySQL客户端的弹性云服务器。 确保和MySQL服务器所在ECS配置成相同Region、相同可用区、相同VPC、相同安全组。 不用购买数据盘。 云服务器名配置为:ecs-client。 其他参数同MySQL服务器的ECS配置。
选择“企业项目”,勾选“协议”,确认配置信息后,单击“立即购买”。 返回弹性云服务器列表页面,查看弹性云服务器的创建进度。 当弹性云服务器的状态为“运行中”时,表示创建完成。 父主题: 自建MySQL服务器
mkdir -p /mysql/install/log cd /mysql/install 下载并安装社区版MySQL,详情请参见如何下载并安装MySQL客户端。 执行如下命令,初始化mysql。 /mysql/install/mysql-8.0.22/bin/mysqld --defaults-file=
返回云数据库GaussDB(for MySQL)实例列表。当GaussDB(for MySQL)实例运行状态为“正常”时,表示实例创建完成。 父主题: 其他云MySQL迁移到GaussDB(for MySQL)