V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ZZ74
V2EX  ›  数据库

阿里云的 Sqlserver 六七百万的数据,插入慢,各位有什么排查或者解决建议

  •  
  •   ZZ74 · 2 天前 · 1215 次点击

    不是宽表。表结构 id 是自增列,一个 varchar 列,类似于订单号,建了索引。剩下就是创建更新时间,以及四五个 varchar 类型的列。
    过程是
    产生一个单号
    每个单号 3 到 4 条数据要插入这个表,用的 batch 插入。每个 batch 都是一个事务。
    插入的同时另外有服务拿着单号从这个表里取数据。

    现象是插入慢,log 看每次插入要一到两秒不止。

    降低表中的数据到 3 百万或者更少,就没问题了

    看看各位有啥思路或者经验

    15 条回复    2025-01-07 11:13:51 +08:00
    yinmin
        1
    yinmin  
       2 天前 via iPhone
    先确认不是阿里的轻量服务器,轻量不适合数据库,直接改 ecs 的 cpu 密集型服务器。

    然后看看是不是表的索引太多了?
    billzhuang
        2
    billzhuang  
       2 天前
    没有 DBA 么?
    ggabc
        3
    ggabc  
       2 天前 via Android
    什么硬盘?
    wangybsyuct
        4
    wangybsyuct  
       2 天前
    我用的是 ecs ,1CPU ,2G 内存,老配置,windows2003+sql server2008 ,大于二百万条数据后,果断分表,读写速度都在合理范围。
    cccvno1
        5
    cccvno1  
       2 天前
    不介意脏读的话加个 with(nolock) 可能会有改善
    xshell
        6
    xshell  
       2 天前
    是 RDS SQL Server ?还是自己在服务器上部署安装的 SQLServer ?
    sirwu28
        7
    sirwu28  
       2 天前
    都六七百万的数据了 早就应该应该上读写分离 或者分表了把。
    jimrok
        8
    jimrok  
       2 天前
    大概率是索引引起的,索引是为了查找方便,代价就是写入的时候需要比较多的计算,数据量越大,计算复杂度越高,自然数据多了插入就慢。没啥好办法,要么就是简化索引,分表,方法挺多的。
    PopRain
        9
    PopRain  
       1 天前
    @sirwu28 你也太看不起 SQL Server 了吧。。。。 主要还是看内存、硬盘 IO, 这么点数据量对于商业数据库实在是太小 case 了,但是如果内存不足、IO 慢,那没戏
    evan1
        10
    evan1  
       1 天前
    同意楼上。

    复制出来一张备份表,在备份表里把订单号索引去掉试试,观察下去掉前和去掉后的差异。
    qq1427168550
        11
    qq1427168550  
       1 天前
    找专业的我试试 alyunflc
    ZZ74
        12
    ZZ74  
    OP
       1 天前
    @yinmin 就主键 外加一个索引
    @billzhuang 没有
    @ggabc 买的阿里云的数据库服务,不知道啥硬盘
    @xshell RDS
    @PopRain 我也觉得 正常情况下这么点数据应该完全没问题。鬼知道阿里云的 rds 底下配置和做了啥
    yinmin
        13
    yinmin  
       1 天前 via iPhone
    大概率是 rds 的内存太小了。我们部署企业项目的时候,都要求甲方服务器内存是数据库文件的 2 倍以上。例如:mssql 的 data 目录里 mdf 文件有 20GB ,服务器内存要 40GB 以上。

    阿里云的 rds 不划算,用 ecs 通用型或者 ecs 计算型自己部署 winserver+mssql 更可控。mssql 维护简单,做好每 5 分钟日志备份/每天全量备份到另外一台服务器的共享目录即可。
    yinmin
        14
    yinmin  
       1 天前 via iPhone
    @sirwu28 #7 mssql 做企业应用还是挺强的。16 核 32 线程 128GB 的 mssql 服务器,企业级 ssd raid ,7000-8000 万条长记录,上百个并发连接都不卡,某些客户端汇总统计一条 select 跑十几分钟,其他的并发连接也不卡。

    不过么,现在要信创淘汰 mssql ,要改用国产数据库了。
    opengps
        15
    opengps  
       1 天前
    “数据量大了之后插入慢”。大概率是因为维护索引引起的,你要是没这个索引,写入性能就不会在数据量大的情况下下降严重了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3606 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 04:39 · PVG 12:39 · LAX 20:39 · JFK 23:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.