云服务器内容精选

  • 注意事项 极致RTO只关注存在主备同步的备DN的RTO是否满足需求。极致RTO去掉了自带的流控,统一使用recovery_time_target参数来做流控控制。 极致RTO采用了多个page redo线程并行加速回放进度。当备DN回放追平主DN,空载的情况下,单个page redo线程的CPU消耗大约在15%左右(实际值与具体硬件和参数配置相关),备DN回放的总CPU消耗值 = 单个page redo线程的CPU消耗值 x page redo线程数。因为启动的更多的线程,CPU和内存的消耗都会比并行回放、串行回放要多。 极致RTO支持备机读,由于增加了对数据页面历史版本的读取,备DN上的查询性能会低于主DN上的查询性能,低于并行回放备机读的查询性能,但是查询阻塞回放的情况有所缓解。 DDL日志的回放速度远远慢于页面修改日志的回放,频繁DDL可能导致主备时延增大。 当节点的I/O和CPU使用过高时(建议不超过70%),回放和备机读性能会有明显下降。
  • MySQL 8.0是否支持全文检索 MySQL 8.0版本支持全文检索,关键字为FULLTEXT。可执行如下SQL语句测试。 创建表 CREATE TABLE ARTICLE ( id int unsigned NOT NULL AUTO_INCREMENT, title varchar(200) DEFAULT NULL, content text, PRIMARY KEY (id), FULLTEXT KEY title (title,content), FULLTEXT KEY fulltext_article (title,content) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 创建索引 ALTER TABLE ARTICLE ADD FULLTEXT INDEX fulltext_article (title,content); 查看索引 SHOW INDEX FROM ARTICLE; 父主题: 数据库基本使用
  • 如何启用MapReduce命令 MapReduce命令由DDS参数模板参数“security.javascriptEnabled”控制,默认值为“false”,表示mapreduce和group命令将无法使用。如果需要使用MapReduce命令,将参数值修改为“true”,修改后需要重启实例才生效。 对于集群实例,需要变更全部shard节点关联参数模板中对应参数值,再重启实例生效。 对于副本集或单节点实例,直接变更实例关联参数模板中对应参数值,再重启实例生效。 如何变更参数值请参见编辑参数模板。
  • 使用MapReduce命令失败时常见报错处理 报错信息:cannot run map reduce without the js engine或map is not defined 图1 案例一 图2 案例二 可能原因:MapReduce命令被限制不能使用。 处理方法:将实例参数模板中参数“security.javascriptEnabled”的值修改为“true”,并重启实例生效,即可使用该命令。 如果实例参数模板为默认参数模板,由于默认参数模板中不允许修改参数值,您可以创建一个参数模板,并修改对应参数值,修改后将新参数模板关联到该实例,具体请参见应用参数模板。
  • RDS for MariaDB实例做OPTIMIZE TABLE操作是否会锁表 RDS实例做OPTIMIZE TABLE操作时,不会一直锁表,整个过程中一小段时间会锁表。锁表期间可以做DML操作,不能同时做其他DDL操作,并且该操作会重建表,过程有点长,会耗费CPU和磁盘资源,如果并发DML很多,最终锁表的时间会更长,建议在业务低峰时间做OPTIMIZE TABLE操作。 父主题: 数据库基本使用
  • 大表高效创建索引的方法 对于千万或亿级大数据量的表,建议使用如下方法提升创建索引的效率。 索引字段尽量小。 选择区分度高的列作为索引列。 如果表中每个字段都无法保证唯一、无法保证NOT NULL,或者不适合做索引,推荐自定义一个ID自增列作为主键,自动满足有序插入。 需要创建索引时,建议先把数据插入完,再使用alter table add index的方式添加索引。 使用TaurusDB的并行DDL功能来创建索引。当数据库硬件资源空闲时,您可以通过并行DDL功能加速DDL执行,避免阻塞后续相关的DML操作,缩短执行DDL操作的窗口期。
  • 大表高效写入数据的方法 对于千万或亿级大数据量的表,建议使用如下方法提升数据写入效率。 删除不必要的索引。 更新数据时候,同时会更新索引数据。对于大数据量的表,避免创建大量的索引,影响更新速度。请根据业务评估,删除不必要的索引。 插入多条数据时,尽量选择批量插入。 因为批量插入只需要远程请求一次数据库。 示例如下: insert into tb1 values(1,'value1');insert into tb2 values(2,'value2');insert into tb3 values(3,'value3'); 优化为: insert into tb values(1,'value1'),(2,'value2'),(3,'value3'); 插入多条数据时,尽量选择手动控制事务插入 通过手动控制事务,可以将多条执行单元合并为一个事务,避免多个事务的开销,同时保证数据的完整性和一致性。 示例如下: insert into table1 values(1,'value1'),(2,'value2'),(3,'value3');insert into table2 values(4,'value1'),(5,'value2'),(6,'value3');insert into table3 values(7,'value1'),(8,'value2'),(9,'value3'); 优化为: start transaction;insert into table1 values(1,'value1'),(2,'value2'),(3,'value3');insert into table2 values(4,'value1'),(5,'value2'),(6,'value3');insert into table3 values(7,'value1'),(8,'value2'),(9,'value3');commit; 合并的语句不能过多,过多时可能会出现大事务,导致表被长时间锁定。请根据业务评估,合理控制事务中的语句个数。 使用主键,在插入数据时,尽量选择主键顺序插入,选择使用AUTO_INCREMENT自增主键。 因为当主键乱序插入时,会产生“页分裂”,消耗性能。 示例如下: 主键乱序插入 : 6 2 9 7 2 主键顺序插入 : 1 2 4 6 8 尽量不要使用UUID做主键或者是其他自然主键,如身份证号。 每次生成的UUID之间无序,插入时为主键乱序插入,会产生“页分裂”,消耗性能。 业务操作时,避免对主键的修改。 修改主键后还需对索引结构进行修改,花费代价较大。 满足业务需求的情况下,尽量降低主键的长度。 不要使用外键来维护外键关系,通过程序来控制。 读写业务分离。读业务放到备库上,避免因IO导致插入慢。
提示

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