同时有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";
如果使用中间表,每次使用完还要删除数据吗?效率有没有临时表高 用来批量更新的。因为要根据不同的条件更新不同的值。每个请求要更新上百条或更多。我想先把要更新的数据插入中间表。然后再从中间表同步更新到原表。
我查资料发现有内存的临时表,疑问是使用临时表,同一时间有多个人操作时,临时表里的数据会不会丢失。
还是要建立一个普通表。来当成中间表使用。使用完后清空数据呢?
引用 同时有500个人在线,这个临时表要建议500个还是只建立一个?
如果你是使用 Sql代码 收藏代码 CREATE TEMPORARY TABLE...
的话,是每个连接=connection会被自动建立1个临时表。 如果你没有使用连接池,500个人启动500个连接的话,就会有500个临时表被建立。
每个临时表生活在自己的connection/session中,不同连接间看不到对方的临时表。
临时表会在连接断开时自动被Drop掉。
引用 同一时间有多个人操作时,临时表里的数据会不会丢失。
不是每个人的单位,是每个连接的单位。 即每次打开连接,你都只能重新建立个临时表,使用完扔在那里,断开连接后,系统自动删掉它。
引用 还是要建立一个普通表。来当成中间表使用。使用完后清空数据呢?
我个人推荐这种方式。
因为临时表比较是连接单位的,现在全都是connection pool,搞不好数据会串(依赖驱动)。另外每次create,drop(自动)还是有开销的。
用中间表的话,一次建好,终身有效,哈。 1.调试方便。 2.需要自己定时清理。 3.最后单独个数据文件加分区,毕竟碎片会很严重。 4.设计上要区分每个用户。可以根据业务走,虽然麻烦些,但是灵活。 5.互相间看得见。也好也不好。看需求。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。