为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
【概述】 目前通过大数据集群导入TiDB批量写入非常慢,已经到了无法忍受的地步。
【背景】 除了一些基础配置,没有进行调优。
【现象】
为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【 TiDB 使用环境】
【概述】 目前通过大数据集群导入TiDB批量写入非常慢,已经到了无法忍受的地步。
【背景】 除了一些基础配置,没有进行调优。
【现象】
能发一下KV与PD层的监控吗?
使用什么工具和方式导入,表结构发下
发的这些图,看不出什么
如果想更快速定位,通过 Dashboard 去看看热力图和 slow query 会更有帮助
用什么工具导入的?
集群的负载,io负载等发一下吧
可以查看一下磁盘利用率,iops情况。
能发一下IO的监控么?
普通的 sas盘吧
这个大批量是多大?逐条提交还是批量提交?
是SSD的,很奇怪的现象,别的5千万级别的表,就没有问题,有一张表只有200w,但是会报错。连续5天了。
报错是什么错?是不是因为每一批数据量太大引起的?
数据导入方式什么样? 表里有什么特殊字段吗? 看IO都满了,是在导入这个表时满的吗?
打满了的那个磁盘是不是异常了?
现在1批插入100条
CREATE TABLE `ads_sale_detail` (
`biz_id` varchar(128) NOT NULL COMMENT '主键ID(sdt销售日期&order_no订单号&goods_code商品编码)',
`region_code` varchar(4) NOT NULL COMMENT '销售大区编码',
`region_name` varchar(8) NOT NULL COMMENT '销售大区名称',
`province_code` varchar(4) NOT NULL COMMENT '省区编码',
`province_name` varchar(16) NOT NULL COMMENT '省区名称',
`city_group_code` varchar(16) NOT NULL COMMENT '城市组编码',
`city_group_name` varchar(16) NOT NULL COMMENT '城市组名称',
`customer_no` varchar(16) NOT NULL COMMENT '客户编码',
`customer_name` varchar(128) NOT NULL COMMENT '客户名称',
`order_no` varchar(32) NOT NULL COMMENT '订单号',
`dc_code` varchar(16) NOT NULL COMMENT '库存地点编码',
`dc_name` varchar(128) NOT NULL COMMENT '库存地点名称',
`goods_code` varchar(32) NOT NULL COMMENT '商品编码',
`goods_name` varchar(256) NOT NULL COMMENT '商品名称',
`classify_large_code` varchar(16) NOT NULL COMMENT '大类编码',
`classify_large_name` varchar(16) NOT NULL COMMENT '大类名称',
`classify_middle_code` varchar(16) NOT NULL COMMENT '中类编码',
`classify_middle_name` varchar(32) NOT NULL COMMENT '中类名称',
`classify_small_code` varchar(16) NOT NULL COMMENT '小类编码',
`classify_small_name` varchar(32) NOT NULL COMMENT '小类名称',
`raw_material_cost` decimal(20,6) NOT NULL COMMENT '原料成本',
`raw_material_qty` decimal(20,6) NOT NULL COMMENT '原料数量',
`purchase_cost` decimal(20,6) NOT NULL COMMENT '采购成本',
`purchase_qty` decimal(20,6) NOT NULL COMMENT '采购数量',
`sales_qty` decimal(20,6) NOT NULL COMMENT '销售数量',
`sales_value` decimal(20,6) NOT NULL COMMENT '含税销售金额',
`sales_cost` decimal(20,6) NOT NULL COMMENT '含税销售成本',
`profit` decimal(20,6) NOT NULL COMMENT '含税定价毛利额',
`goods_profit_rate` decimal(20,6) NOT NULL COMMENT '订单单品含税定价毛利率',
`middle_office_cost` decimal(20,6) NOT NULL COMMENT '中台成本',
`front_profit` decimal(20,6) NOT NULL COMMENT '前端毛利额',
`sdt` varchar(16) NOT NULL COMMENT '销售日期',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
`create_by` varchar(64) NOT NULL DEFAULT 'TEST' COMMENT '创建人',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`update_by` varchar(64) NOT NULL DEFAULT 'TEST' COMMENT '创建人',
PRIMARY KEY (`biz_id`),
KEY `sdt_code` (`sdt`,`region_code`,`province_code`,`city_group_code`,`customer_no`,`order_no`,`goods_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='销售成本';
sqoop 导入的
TTL manager has timed out, pessimistic locks may expire, please commit or rollback this transaction
我想着,100条一批循环插入,不应该有问题,事务也不会太大。