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

如果一台服务器里,放上百万个数据库会怎样?

  •  
  •   stanhou · 2016-01-06 08:01:31 +08:00 · 2944 次点击
    这是一个创建于 3245 天前的主题,其中的信息可能已经有所发展或是发生改变。

    都是很小的数据库,表结构都一样,大多数都不经常访问。表结构也是万年不需要改变的。
    然后会不会还有其它问题?

    25 条回复    2016-01-07 09:32:00 +08:00
    lxrmido
        1
    lxrmido  
       2016-01-06 08:18:44 +08:00   ❤️ 1
    数据库只是文件
    c742435
        2
    c742435  
       2016-01-06 08:27:17 +08:00
    内存不够?
    wuxqing
        3
    wuxqing  
       2016-01-06 08:37:31 +08:00
    数据库系统通常会把数据库相关的文件集中放到某个目录下,所以我个人觉得上百万个数据库对应的就有几百万(甚至几千万)个文件( pgsql 是每个数据库一个文件夹)在一个目录下,这样速度会慢。当然大多数不经常访问,估计影响不大,常用的数据库会被缓存
    zonghua
        4
    zonghua  
       2016-01-06 08:51:02 +08:00 via iPhone
    oracle 的话一个数据库就是一个实例的进程和文件
    Admstor
        5
    Admstor  
       2016-01-06 09:00:13 +08:00
    单目录下百万级文件数会有性能问题
    Livid
        6
    Livid  
    MOD
       2016-01-06 09:03:06 +08:00
    最简单的验证方法就是写一个程序在这台服务器上建 100 万个这样的测试数据库或者表,然后就知道瓶颈在哪里了。
    hienchu
        7
    hienchu  
       2016-01-06 09:05:45 +08:00 via iPhone
    不经常访问应该没问题
    shakoon
        8
    shakoon  
       2016-01-06 09:28:09 +08:00
    为什么要建这么多库?一个实例下建百万个用户不行吗,表都在一个库里。
    Cassius
        9
    Cassius  
       2016-01-06 09:32:39 +08:00
    然后回头就又要优化数据库么。。。
    rainysia
        10
    rainysia  
       2016-01-06 10:37:47 +08:00
    碰见过类似的一个数据库设计.
    是目前还没起来的汽配市场.
    俄罗斯人设计的.每年每个车型一个库, 按照发动机, 地盘这样分了表, 里面存上原厂目录(就是该款车的每个零部件的型号,size,price,图纸,锚点之类的). 想想多少库

    之前看那个 DB, 是 sqlserver,大概有 7T, 只包括了欧洲近 60 年来的车型(中国和美国是另外两套标准, 所以没数据). 图纸单独存另外一个服务器.

    更新一次细节比如锚点要大概 24 小时
    Neveroldmilk
        11
    Neveroldmilk  
       2016-01-06 11:18:10 +08:00
    要看你的服务器 I/O 吞吐能力和运算能力,基本上这样搞都是自虐。
    clino
        12
    clino  
       2016-01-06 11:19:40 +08:00
    上百万个 sqlite 文件是不是就行了?
    xiaosu
        13
    xiaosu  
       2016-01-06 11:24:15 +08:00
    过来凑个热闹
    Tink
        14
    Tink  
       2016-01-06 11:28:15 +08:00 via iPhone
    sqlite+1 啊,一切皆文件
    laoyuan
        15
    laoyuan  
       2016-01-06 11:48:15 +08:00
    表结构,加一个 table_id 字段汇总到一个表里不就完了
    stanhou
        16
    stanhou  
    OP
       2016-01-06 13:05:39 +08:00
    数据库是 Mysql/innodb
    @shakoon 用的 php 程序,提供 saas ,每个实例都要新建一组表

    @laoyuan 我最先就考虑这个方法,比如在所有 tables 加一个 site_id,但是要修改很多代码,而且查询条件也会增多,所以就想能不能用这种“暴力”的方法。
    wizardoz
        17
    wizardoz  
       2016-01-06 13:06:24 +08:00
    打开方式不对
    ooh
        18
    ooh  
       2016-01-06 13:10:09 +08:00   ❤️ 1
    会不会上灰尘?
    winkidney
        19
    winkidney  
       2016-01-06 13:44:06 +08:00   ❤️ 1
    @Cassius 发现一只休斯,也是默默怒摸!
    SmiteChow
        20
    SmiteChow  
       2016-01-06 15:17:58 +08:00
    表中加 user_id, 提供多租户。
    SmiteChow
        21
    SmiteChow  
       2016-01-06 15:19:26 +08:00
    基于 MySQL 实现云数据库服务的设计与实现 - 中国科技论文 ...
    SmiteChow
        22
    SmiteChow  
       2016-01-06 15:22:09 +08:00   ❤️ 1
    iugo
        23
    iugo  
       2016-01-06 15:36:41 +08:00
    @zonghua PostgreSQL 也是.
    stanhou
        24
    stanhou  
    OP
       2016-01-06 15:45:33 +08:00
    @SmiteChow 我才知道“多租户”这个关键词
    xiamingchong
        25
    xiamingchong  
       2016-01-07 09:32:00 +08:00
    必然会有问题,最好开多个实例,每个实例下放一些数据库
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2810 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:50 · PVG 19:50 · LAX 03:50 · JFK 06:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.