› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
bthulu
V2EX  ›  MySQL

西数蓝盘批量写入, 主键 uuid, 无限掉速

  •  
  •   bthulu · Mar 30, 2021 · 4395 views
    This topic created in 2047 days ago, the information mentioned may be changed or developed.

    家用电脑, 西数蓝盘, 系统 Centos7, 用 docker 装了个 percona mysql 5.7.33. 创建了这么一张表, 执行批量写入测试.

    CREATE TABLE `uc_user` (
      `ID` varchar(32) NOT NULL,
      `USER_NAME` varchar(20) NOT NULL,
      `USER_PWD` varchar(40) NOT NULL,
      `BIRTHDAY` datetime NOT NULL,
      `NAME` varchar(10) NOT NULL,
      `USER_ICON` varchar(200) NOT NULL,
      `SEX` varchar(1) NOT NULL,
      `NICKNAME` varchar(20) NOT NULL,
      `STAT` varchar(16) NOT NULL,
      `USER_MALL` double NOT NULL,
      `LAST_LOGIN_DATE` datetime NOT NULL,
      `LAST_LOGIN_IP` varchar(15) NOT NULL,
      `SRC_OPEN_USER_ID` double NOT NULL,
      `EMAIL` varchar(80) NOT NULL,
      `MOBILE` varchar(11) NOT NULL,
      `IS_DEL` decimal(1,0) NOT NULL,
      `IS_EMAIL_CONFIRMED` decimal(1,0) NOT NULL,
      `IS_PHONE_CONFIRMED` decimal(1,0) NOT NULL,
      `CREATER` varchar(32) NOT NULL,
      `CREATE_DATE` datetime NOT NULL,
      `UPDATE_DATE` datetime NOT NULL,
      `MAC` varchar(17) NOT NULL,
      `SOURCE` varchar(4) NOT NULL,
      `ACTIVATE` varchar(4) NOT NULL,
      `ACTIVATE_TYPE` varchar(4) NOT NULL,
      `IS_LIFE` decimal(1,0) NOT NULL,
      PRIMARY KEY (`ID`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    

    每写入 500 条 commit 一次, 最终结果是, 随着写入量的增加, 每秒写入量逐步递减. 而我换成阿里云的 ecs, 同样在上面起了个 mysql5.7.33, 每秒写入量却能稳定在 4000. 这里的 id 是 uuid. 当把 id 换成自增主键时, 家用电脑每秒写入量就能稳定在 12000 了. 所以, 这里是不是因为西数蓝盘长时间 4k 随机读写掉速造成的? 而阿里云用的可能是西数黑盘, 4k 随机读写性能比较稳定?

    已添加 9.6 万条数据, 每秒写入 6000
    已添加 9.7 万条数据, 每秒写入 6062
    ...
    已添加 20.0 万条数据, 每秒写入 5882
    已添加 20.1 万条数据, 每秒写入 5742
    ...
    已添加 22.0 万条数据, 每秒写入 5365
    已添加 24.1 万条数据, 每秒写入 4820
    已添加 26.0 万条数据, 每秒写入 4333
    已添加 28.0 万条数据, 每秒写入 3888
    已添加 30.0 万条数据, 每秒写入 3333
    ...
    已添加 35.0 万条数据, 每秒写入 2397
    已添加 40.0 万条数据, 每秒写入 1860
    已添加 45.0 万条数据, 每秒写入 1525
    已添加 50.0 万条数据, 每秒写入 1295
    
    24 replies  •  2021-03-31 10:34:51 +08:00
    loginv2
    loginv2
    Mar 30, 2021
    1
    阿里云不太可能用家用型号吧
    关注一下写入时温度?
    murmur
    murmur
    Mar 30, 2021
    2
    你的蓝盘是叠瓦盘么,叠瓦盘只适合做冷仓库不适合做并发,缓存区内很好,出了缓存稍微有点读写并发就趴窝
    lewis89
    lewis89
    Mar 30, 2021
    3
    不好说 可能蓝盘转速太差了吧 会不会是这样...
    CallMeReznov
    CallMeReznov
    Mar 30, 2021
    4
    缓内 VS 缓外
    ch2
    ch2
    Mar 30, 2021 via iPhone
    5
    任务管理器打开看看磁盘性能指标就知道了,大量随机写的时候,smr 的响应时间会暴涨
    lu5je0
    lu5je0
    Mar 30, 2021❤️1
    6
    innodb 页分裂
    matrix67
    matrix67
    Mar 30, 2021
    7
    测硬盘用 fio 先跑啊
    lasfresas
    lasfresas
    Mar 30, 2021
    8
    1.他们用的盘更好,不是蓝盘也不是黑盘
    2.raid
    lewis89
    lewis89
    Mar 30, 2021
    9
    @ch2 可能楼主新买的蓝盘吧,现在市面上清一色的蓝盘 都是 SMR 写入一次要刷写 0-4 个磁道 ,确实随机写的话,如果缓存写满了,掉速是难以避免的..
    goodryb
    goodryb
    Mar 30, 2021
    10
    首先,云厂商至少用的也是企业级的硬盘,不管是 HDD 还是 SSD
    其次,除了本地盘,云盘全部采用的是分布式存储技术,也就是说你的数据是分散在多块硬盘上的,性能根据你购买的存储规格各有不同,但基本都能保证偏差不多
    love
    love
    Mar 30, 2021
    11
    我以为 mysql 别用随机主键是基本共识了呢
    uuid 你不但当主键还用了 varchar(32)多费一倍内存
    ak47iej
    ak47iej
    Mar 30, 2021
    12
    WD 蓝盘 HDD 除了 1T 是 7200rpm+CMR, 以上的全都是 5400rpm+smr....写入肯定感人,买 ssd 蓝盘就没这个问题了
    MeteorCat
    MeteorCat
    Mar 30, 2021 via Android
    13
    企业级硬盘和家用级硬盘不一样,人家那是 sas 硬盘
    F281M6Dh8DXpD1g2
    F281M6Dh8DXpD1g2
    Mar 30, 2021
    14
    测下 iops 呗
    yc8332
    yc8332
    Mar 30, 2021
    15
    uuid 做主键。这个影响性能
    opengps
    opengps
    Mar 30, 2021
    16
    这个问题,我遇到了,关键字“聚集索引”,参考下我的博客: https://www.opengps.cn/Blog/View.aspx?id=284&from=v2ex
    bthulu
    bthulu
    OP
    Mar 30, 2021
    17
    @opengps @yc8332 跟聚集索引无关. 聚集索引是会降低性能. 但是家用机降低十分严重, 阿里云主机就影响不大, 同样都是 uuid, 同样是聚集索引, 那他们之间的性能差别, 是怎么来的?
    opengps
    opengps
    Mar 30, 2021 via Android
    18
    @bthulu 你还没看我博客要说的重点,我的意思是,用聚集索引决定物理写入位置是尾部追加,从而避免因为维护默认主键索引带来的额外性能损耗。另外,云服务器的硬盘本身是个弱点,云硬盘的 io 本身就是严重损失的
    systemcall
    systemcall
    Mar 30, 2021
    19
    去买个 SSD,用一下 SSD,就知道区别了
    话说现在用电脑还有不上 SSD 的吗? 200 多就可以买个铠侠 240G SSD 了,那个就可以日常使用了
    kokutou
    kokutou
    Mar 30, 2021
    20
    报出型号嘛...

    如果你看 1t 以上的容量好像很便宜就买了, 那大概率买到叠瓦...
    exploreexe
    exploreexe
    Mar 31, 2021
    21
    手里的两块红盘刚报废,以后再也不会买西数的硬盘了,是真的垃圾。
    wmjie
    wmjie
    Mar 31, 2021
    22
    1. 建议不要用 uuid 做主键。
    2. ecs 的用的哪个盘不重要,重要的是他是直接落盘了,还是会进行了特殊的调优:比如在内存缓存了一下?
    securityCoding
    securityCoding
    Mar 31, 2021
    23
    1. 先用 fio 测试下磁盘 iops,修改 mysql 设置
    2. uuid 做主键要不得,会触发页分裂,io 次数会增加很多
    yc8332
    yc8332
    Mar 31, 2021
    24
    @bthulu 云主机不是一块硬盘。。都是磁盘阵列,可能还是 ssd 。。他们的 io 都是优化过的。速度肯定比你单盘快
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1918 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 07:47 · PVG 15:47 · LAX 23:47 · JFK 02:47
    ♥ Do have faith in what you're doing.