0 0

MYSQL临时表/中间表疑问5

同时有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";


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

问题补充:用来批量更新的。因为要根据不同的条件更新不同的值。每个请求要更新上百条或更多。我想先把要更新的数据插入中间表。然后再从中间表同步更新到原表。

我查资料发现有内存的临时表,疑问是使用临时表,同一时间有多个人操作时,临时表里的数据会不会丢失。

还是要建立一个普通表。来当成中间表使用。使用完后清空数据呢?
2013年8月19日 22:08

2个答案 按时间排序 按投票排序

0 0

采纳的答案

引用
同时有500个人在线,这个临时表要建议500个还是只建立一个?

如果你是使用
CREATE TEMPORARY TABLE...
的话,是每个连接=connection会被自动建立1个临时表。
如果你没有使用连接池,500个人启动500个连接的话,就会有500个临时表被建立。

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

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


引用
同一时间有多个人操作时,临时表里的数据会不会丢失。

不是每个人的单位,是每个连接的单位。
即每次打开连接,你都只能重新建立个临时表,使用完扔在那里,断开连接后,系统自动删掉它。


引用
还是要建立一个普通表。来当成中间表使用。使用完后清空数据呢?

我个人推荐这种方式。

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

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

2013年8月19日 22:54
0 0

这个临时表是要干什么用?保存用户登录状态么?做登录唯一性校验?如果做唯一性校验有spring security,如果不是,用session保存不可以吗?这么多人频繁操作这张表,即便数据占用内存不大,数据库连接也是一个非常昂贵的资源,要尽量避免此类操作,如果做session同步,可以采用cookie或者memcache。

2013年8月19日 22:14

相关推荐

    mysql临时表用法分析【查询结果可存在临时表中】

    MySQL临时表是一种在会话范围内创建的特殊类型的表,它仅对当前会话可见,并在会话结束时自动删除。这种技术在处理复杂查询、中间数据处理或报表生成时非常有用,因为它允许用户将查询结果暂存起来,以便进一步处理...

    Mysql临时表和派生表

    MySQL中的临时表是一种特殊的表类型,主要用于存储临时数据或中间结果集,适用于那些需要多次查询同一结果集的场景。根据存储位置的不同,可以将临时表分为两类:内存临时表和外存临时表。 - **内存临时表(in-...

    简洁好用的数据库表结构文档工具,支持MySQL/MariaDB/SqlServer/oracle/PostgreSQL/TIDB

    简洁好用的数据库表结构文档工具,支持MySQL/MariaDB/SqlServer/oracle/PostgreSQL/TIDB/CacheDB 数据库。简洁好用的数据库表结构文档工具,支持MySQL/MariaDB/SqlServer/oracle/PostgreSQL/TIDB/CacheDB 数据库。...

    MySQL性能分析之临时表

    在MySQL数据库管理系统中,**临时表**是一种特殊类型的表,主要用于存储中间结果集,它可以帮助执行一些复杂的查询操作,如`GROUP BY`、`DISTINCT`、某些`ORDER BY`以及`UNION`等操作。临时表在完成特定任务后会被...

    MYSQL 临时表用法总结

    - **存储中间结果**:在执行多步骤计算时,可以使用临时表暂存中间结果,避免重复计算。 - **并发安全**:不同会话间的临时表互不影响,因此在并发环境下可以用于临时存储会话特定数据。 5. **注意事项** - **...

    MySQL临时表那些事

    比如,在执行复杂的SQL查询和事务处理时,使用临时表可以提高数据处理的效率,因为它们提供了一种方便的方式来存储中间结果。接下来,我将详细介绍关于MySQL临时表的创建语法、使用实例和一些注意事项。 首先,创建...

    SpringBoot 整合Mybatis 创建临时表

    当我们需要处理一些临时性的数据操作时,可能会涉及到创建临时表。下面我们将详细探讨如何在SpringBoot项目中整合Mybatis,以实现创建临时表的功能。 首先,我们需要在SpringBoot项目中引入Mybatis的相关依赖。在`...

    pymysql通过读取mysql临时表数据更新或插入主表

    pymysql+mysql通过读取临时表数据更新或插入主表,原创手写已测可运行效果好。

    MySQL临时表的简单用法介绍

    MySQL临时表是一种在数据库会话期间创建和使用的特殊类型的表,它们主要用于存储中间查询结果,以便在复杂的查询或处理大量数据时提高性能。临时表的名字只对当前会话可见,这意味着其他用户无法看到或访问你的临时...

    Mysql临时表原理及创建方法解析

    MySQL临时表是数据库管理系统中的一种特殊表格,它主要用于在单个会话期间存储临时数据,以便在多个查询之间共享和处理。临时表的生命周期仅限于创建它的会话,一旦会话结束,临时表及其所有数据都会被自动删除,这...

    Mysql 存储过程(输入,返回),函数,临时表

    Mysql 存储过程,函数,临时表 存储过程包括输入返回,可供项目中遇到难题的人解决一下,我曾为此费了好大精力,最后总结出来共大家分享

    MySQL临时表空间优化:提升数据库性能的关键

    ### MySQL 临时表空间优化:提升数据库性能的关键 #### MySQL 特点概述 MySQL 是一个广泛使用的开源关系型数据库管理系统(RDBMS),基于 SQL 语言。它作为 LAMP 技术栈的一部分,在构建动态网站和 Web 应用程序...

    MySQL中的两种临时表

    内部临时表则由MySQL系统根据需要自动创建,用于存储查询的中间结果。这些表对用户不可见,但可以通过`EXPLAIN`或`SHOW STATUS`来检查MySQL是否使用了它们。内部临时表主要用于性能优化,包括在查询优化阶段和执行...

    Mysql Connector/Net 64位

    这款驱动程序允许.NET框架的应用程序与MySQL数据库进行无缝连接和数据交互,从而实现高效的数据访问和管理。 首先,我们要了解什么是ADO.NET。ADO.NET是微软.NET Framework的一部分,它提供了一组用于访问数据的类...

    MySQL使用临时表加速查询的方法

    本文实例讲述了MySQL使用临时表加速查询的方法。分享给大家供大家参考。具体分析如下: 使用MySQL临时表,有时是可以加速查询的,下面就为您详细介绍使用MySQL临时表加速查询的方法。 把表的一个子集进行排序并创建...

    浅谈MySQL临时表与派生表

    在执行诸如SELECT、JOIN、UNION等复杂查询时,如果需要存储中间结果,MySQL会创建临时表。临时表分为内存临时表和磁盘临时表。内存临时表以MEMORY引擎创建,数据存储在内存中,速度快但容量有限。如果内存临时表的...

    longxuegang#MySQL5.7#241-临时表优化1

    1.背景MySQL包括两类临时表,一类是通过create temporary table创建的临时表,一类是在query过程中using temporary而创

    mysql使用临时表加速查询的方法.doc

    使用临时表是MySQL优化查询中的一项技术,它可以在特定情况下显著提升查询速度,减少系统负载,优化资源使用。 本文介绍了在MySQL中使用临时表加速查询的基本方法及其适用场景。首先,创建临时表是通过对原表中子集...

    mysql 临时表 cann't reopen解决方案

    当会话结束时,临时表会自动删除,这使得它们非常适合用于存储中间结果或执行复杂查询时的暂存数据。然而,有时在使用过程中可能会遇到“Can't reopen table”这样的错误,这通常是由于特定的限制或不当操作引起的。...

Global site tag (gtag.js) - Google Analytics