有一个系统,每天要向sql server服务器插入10几万条记录,在不考虑查询的情况下怎麼提高效率
目前的状况是:当记录数据到达1000w之後插入记录就变得很慢,此时只能把原表改名,重建新表建立分区表,对於提高插入记录效率有没有帮助,我知道对於查询效率提高不少,请知道的...
目前的状况是:当记录数据到达1000w之後插入记录就变得很慢,此时只能把原表改名,重建新表
建立分区表 ,对於提高插入记录效率有没有帮助,我知道对於查询效率提高不少,请知道的人回答 展开
建立分区表 ,对於提高插入记录效率有没有帮助,我知道对於查询效率提高不少,请知道的人回答 展开
6个回答
展开全部
建分区表的话, 要看你有几个磁盘.
如果只有一个磁盘的, 分区来分区去, 最后数据还是在 一个磁盘上面,
如果你有多个磁盘的.
那么可以根据那个 自增 ID , 设置一个 计算列
比如你有5个 磁盘, 那么 那个计算列 是 自增 ID % 5
那么 当 计算列的数值 = 1 , 数据被存储到 磁盘1上面
那么 当 计算列的数值 = 2 , 数据被存储到 磁盘2上面
那么 当 计算列的数值 = 3 , 数据被存储到 磁盘3上面
那么 当 计算列的数值 = 4 , 数据被存储到 磁盘4上面
那么 当 计算列的数值 = 0 , 数据被存储到 磁盘5上面
这种情况,是针对 你插入数据量很大, 瓶颈发生在 磁盘 IO 处理的情况下。
可以提升一定的 插入的性能。
但是看你的那个描述
当记录数据到达1000w之後插入记录就变得很慢
那么我怀疑,可能是 索引处理 花费的时间比较多了
因为你插入一行数据
要更新 表的数据, 同时还有 更新索引的数据
表的数据,更新起来很简单。 索引的更新,需要做一定的计算。
即时你的表,没有任何的索引,但是那个 自增主键, 也是自动要创建索引的。
如果只有一个磁盘的, 分区来分区去, 最后数据还是在 一个磁盘上面,
如果你有多个磁盘的.
那么可以根据那个 自增 ID , 设置一个 计算列
比如你有5个 磁盘, 那么 那个计算列 是 自增 ID % 5
那么 当 计算列的数值 = 1 , 数据被存储到 磁盘1上面
那么 当 计算列的数值 = 2 , 数据被存储到 磁盘2上面
那么 当 计算列的数值 = 3 , 数据被存储到 磁盘3上面
那么 当 计算列的数值 = 4 , 数据被存储到 磁盘4上面
那么 当 计算列的数值 = 0 , 数据被存储到 磁盘5上面
这种情况,是针对 你插入数据量很大, 瓶颈发生在 磁盘 IO 处理的情况下。
可以提升一定的 插入的性能。
但是看你的那个描述
当记录数据到达1000w之後插入记录就变得很慢
那么我怀疑,可能是 索引处理 花费的时间比较多了
因为你插入一行数据
要更新 表的数据, 同时还有 更新索引的数据
表的数据,更新起来很简单。 索引的更新,需要做一定的计算。
即时你的表,没有任何的索引,但是那个 自增主键, 也是自动要创建索引的。
追问
的確只有一個磁盤,但可以分成不同的10幾個文件,只是不知道這樣做是不是相當於新建一個表,因為對於新建表的插入操作速度遠快天對已經有幾百w條記錄的表;
謝謝大家了,分區表已經建了,先試一周。
今至电子科技有限公司
2024-08-23 广告
2024-08-23 广告
数据库备份是确保数据安全与业务连续性的关键环节。我们上海今至电子科技有限公司高度重视数据保护,定期执行全面的数据库备份策略。这包括使用先进工具和技术,对关键业务数据进行自动化备份,并存储在安全可靠的外部存储介质或云端。通过定期验证备份的完整...
点击进入详情页
本回答由今至电子科技有限公司提供
展开全部
插数据前把约束 主键 索引什么的 全删掉
插好后 再重建
如果速度还不够快
就把日志关掉 以不记日志的方式 insert。
插好后 再重建
如果速度还不够快
就把日志关掉 以不记日志的方式 insert。
追问
當記錄到達1000w條之後,即使不插入數據,只修改索引,也是不可能的事,系統會卡死
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
既然只考虑插入,那么你就要从硬件上来优化了。
比如说你的硬盘,要选用高速写入的硬盘。
如果要是取数据的话,那么就需要把内存加大。等等。
你这个也只能从硬件上解决了
比如说你的硬盘,要选用高速写入的硬盘。
如果要是取数据的话,那么就需要把内存加大。等等。
你这个也只能从硬件上解决了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、尽量缩小每次插入数据行的字节数,例如:文本类型的可以用tinyint类型,或者Smallint类型,或者是Int类型
2、在插入数据的时候,尽量不要使用数据库层面的数据校验,约束和主外键约束。
3、优化查询,尽量使用存储过程,或者使用计划任务认为对此表数据进行定时统计,产生镜像统计表。
4、更换更快的磁盘,例如:固态硬盘或者更快的PCI的硬盘,加快IO读写速度
5、定期清理表中过期数据,形成沉淀数据表
2、在插入数据的时候,尽量不要使用数据库层面的数据校验,约束和主外键约束。
3、优化查询,尽量使用存储过程,或者使用计划任务认为对此表数据进行定时统计,产生镜像统计表。
4、更换更快的磁盘,例如:固态硬盘或者更快的PCI的硬盘,加快IO读写速度
5、定期清理表中过期数据,形成沉淀数据表
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果只在乎插入,不考虑查询,应该不会下降太多。
表有多少列?有index吗?主键是什么?
是什么系统? oracle? sql server?
表有多少列?有index吗?主键是什么?
是什么系统? oracle? sql server?
追问
sql server, 有一個自增列(主鍵),40多列,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询