小熊开发 2013-08-19 22:08 采纳率: 100%
浏览 532
已采纳

MYSQL临时表/中间表疑问

同时有500个人在线,都在同一时间段要操作MYSQL的临时表。

这里有个疑问,这个临时表要建议500个还是只建立一个?如果建立1个,同时操作时其它人的数据会不会丢失。

这是我的临时表结构,保存在内存中。

CREATE TEMPORARY TABLE tmp_tradelist_$id (
tid bigint(20) unsigned NOT NULL DEFAULT '0',
status varchar(40) NOT NULL,
PRIMARY KEY (tid)
) ENGINE=MEMORY DEFAULT CHARSET=utf8";

如果使用中间表,每次使用完还要删除数据吗?效率有没有临时表高

  • 写回答

2条回答

  • clxy大叔 2013-08-19 22:54
    关注

    [quote]同时有500个人在线,这个临时表要建议500个还是只建立一个? [/quote]
    如果你是使用[code="sql"]CREATE TEMPORARY TABLE...[/code]的话,是每个连接=connection会被自动建立1个临时表。
    如果你没有使用连接池,500个人启动500个连接的话,就会有500个临时表被建立。

    每个临时表生活在自己的connection/session中,不同连接间看不到对方的临时表。

    临时表会在连接断开时自动被Drop掉。

    [quote]同一时间有多个人操作时,临时表里的数据会不会丢失。[/quote]
    不是每个人的单位,是每个连接的单位。
    即每次打开连接,你都只能重新建立个临时表,使用完扔在那里,断开连接后,系统自动删掉它。

    [quote]还是要建立一个普通表。来当成中间表使用。使用完后清空数据呢?[/quote]
    [size=large][b]我个人推荐这种方式。[/b][/size]

    因为临时表比较是连接单位的,现在全都是connection pool,搞不好数据会串(依赖驱动)。另外每次create,drop(自动)还是有开销的。

    用中间表的话,一次建好,终身有效,哈。
    1.调试方便。
    2.需要自己定时清理。
    3.最后单独个数据文件加分区,毕竟碎片会很严重。
    4.设计上要区分每个用户。可以根据业务走,虽然麻烦些,但是灵活。
    5.互相间看得见。也好也不好。看需求。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件