ADB批量insert的时候有没有禁用索引,不记录日志等这些操作提高我插入的性能?有的话,提供一下相关文档
阿里云ADB可以通过以下几种方式来提高插入性能:
可以使用以下命令关闭ADB日志记录:
set nocount on;
set session characteristics as transaction read write;
set session characteristics as commit off;
set session characteristics as dml_batch_size 1000000;
insert /*+NOLOGGING*/ into test values ('1', 'value_1');
commit;
可以使用以下命令禁用索引:
set nocount on;
set session characteristics as transaction read write;
set session characteristics as commit off;
set session characteristics as dml_batch_size 1000000;
alter table test disable constraint test_pk;
insert into test values ('1', 'value_1');
commit;
alter table test enable constraint test_pk;
可以使用以下命令进行批量插入:
set nocount on;
set session characteristics as transaction read write;
set session characteristics as commit off;
set session characteristics as dml_batch_size 1000000;
insert /*+APPEND_VALUES*/ into test values ('1', 'value_1');
insert /*+APPEND_VALUES*/ into test values ('2', 'value_2');
commit;
以上命令中,APPEND_VALUES
提示执行追加写入操作,可以提高批量插入性能。
参考文档:阿里云ADB官方文档 https://help.aliyun.com/document_detail/95854.html
是的,你可以禁用索引、不记录日志等操作来提高ADB批量插入的性能。具体操作如下:
1.禁用索引
在进行大量数据插入时,如果表中存在较多的索引,这些索引将会降低插入的性能。因为每次插入数据时都需要更新索引。因此,在插入数据之前,禁用索引可以提高插入的速度。禁用索引的命令如下:
ALTER TABLE table_name DISABLE KEYS; 禁用索引之后,插入完数据后,别忘了要重新启用索引:
ALTER TABLE table_name ENABLE KEYS; 注意:禁用索引会影响查询的性能,因此只有在大量插入数据时才需要禁用索引。
2.不记录日志
在进行大量数据插入时,日志记录也会对性能造成影响。因此,关闭日志记录可以提高插入的速度。关闭日志记录的命令如下:
SET SQL_LOG_BIN=0; 如需重新启用日志记录,则可以执行以下命令:
SET SQL_LOG_BIN=1; 注意:关闭日志记录可能会影响数据的完整性和一致性,因此请谨慎使用。
参考文档:
1.《阿里云文档-MySQL性能优化》:https://help.aliyun.com/document_detail/120567.html
2.《MySQL官方文档-13.2.6 LOAD DATA INFILE Syntax》:https://dev.mysql.com/doc/refman/8.0/en/load-data.html
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云自主研发的云原生数据仓库,具有高并发读写、低峰谷读写、弹性扩展、安全可靠等特性,可支持PB级别数据存储,可广泛应用于BI、机器学习、实时分析、数据挖掘等场景。包含AnalyticDB MySQL版、AnalyticDB PostgreSQL 版。