
# StarRocks数据导入规范
该章节主要介绍StarRocks数据导入规范。
#### StarRocks数据导入建议
- 禁止高频执行**update** 、**delete** 或**truncate** 操作，推荐几分钟执行一次，使用**delete**必须设置分区或主键列条件。
- 禁止使用**INSERT INTO** *tbl1* **VALUES ("1"), ("a");**方式导入数据，少量少次写可以，多量多频次时需使用StarRocks提供的StreamLoad、BrokerLoad、SparkLoad或者Flink Connector方式。
- 在Flink实时写入数据到StarRocks的场景下，CheckPoint设置的时间需要考虑每批次数据量，如果每批次数据太小会造成大量小文件，推荐值为60s。
- 建议不使用**insert values**作为数据写入的主要方式，批量数据导入推荐使用StreamLoad、BrokerLoad或SparkLoad。
- 使用INSERT INTO WITH LABEL *XXX* SELECT方式进行数据导入，如果有下游依赖或查询，需要先查看导入的数据是否为可见状态。
  具体查看方法：通过**show load where label='** *xxx* **'** SQL命令查询当前INSERT任务状态（status）是否为"VISIBLE"，如果为"VISIBLE"导入的数据才可见。
  
- Streamload数据导入适合10 GB以内的数据量、Brokerload适合百GB以内数据，数据过大时可考虑使用SparkLoad。
- 禁止使用StarRocks的Routine Load进行导入数据操作，推荐使用Flink查询Kafka数据再写入StarRocks，更容易控制导入数据单批次数据量，避免大量小文件产生。如果确实已经使用了Routine Load进行导数，在没整改前请配置FE"max_tolerable_backend_down_num"参数值为"1"，以提升导入数据可靠性。
- 建议低频攒批导入数据，平均单表导入批次间隔需大于30s，推荐间隔60s，一次导入1000\~100000行数据。
 
