草庐IT

没有临时文件的远程主机的 MySQL 数据库转储

我正在尝试在我的工作中实现数据库备份cron(欢迎使用其他解决方案),但我遇到了一个小问题:我有一个空间超过10GB的大型数据库,而当前的虚拟机没有空间将其存储在mysql创建的临时文件中。我知道我可以使用带主机参数的mysqldump,但我的问题是,这样做时mysqldump生成的临时文件是保留在运行它的机器上还是保留在数据库服务器上?更新:我忘了提到我正在尝试备份网站网络,其中一些网站位于防火墙后面(需要VPN访问),一些网站需要跳转服务器才能访问数据库服务器。 最佳答案 您可以从存档主机运行shell脚本,您已经在其中与数据库

mysql - 缓慢删除临时表

我在构建一个用于报告目的的临时表时遇到了一个有趣的问题。我发现如果不指定存储引擎,DROPTEMPORARYTABLE命令最多会挂半秒。如果我将我的表定义为ENGINE=MEMORY,那么这个短暂的挂起就会消失。因为我有这个问题的解决方案(使用MEMORY表),我的问题是为什么临时表需要很长时间才能删除?他们默认不使用MEMORY引擎吗?它甚至不是一个很大的表,只有几百行我当前的测试数据。 最佳答案 默认情况下,临时表将在mysql配置指定的位置创建,通常是/tmp或磁盘上的其他位置。您可以将此位置(甚至多个位置)设置为RAM磁盘位

使用文件排序和临时的 MySQL 查询

我正在使用一个简单的MySQL查询,但由于使用了ORDERBY,性能真的很差。我不明白为什么MySQL使用文件排序和临时排序。我的查询是:EXPLAINSELECT*FROMEventsINNERJOINEventLogFilesONServerID=42ANDEvents.LogFileID=EventLogFiles.LogFileIDORDERBYReportIDDESC,TimeWrittenDESCLIMIT100这是EXPLAIN的输出:表事件结构表事件索引表事件日志文件结构表EventLogFiles索引更新:我尝试创建两个新索引,但它们仍然强制MySQL使用文件排序和临

mysql - 如何创建临时表而不丢失 Django 中的 ORM?

我很好奇如何在Django中创建临时表?(数据库是mysql,客户端需求)CREATETEMPORARYTABLEsomewhat_like_a_cacheAS(SELECT*FROMexpensive_query_with_multiple_joins);SELECT*FROMsomewhat_like_a_cacheLIMIT1000OFFSETX;背后的原因:结果集相当大,我必须对其进行迭代。昂贵的查询大约需要30秒。如果没有临时表,我会对数据库服务器施加压力几个小时。使用临时表,昂贵的查询只执行一次,之后在切片中迭代临时表是便宜的。这不是重复的HowdoIcreateatemp

mysql - 复制临时表 MySQL

我想在同一个查询中多次引用一个临时表。由于临时表的问题,我不能这样做:http://dev.mysql.com/doc/refman/5.7/en/temporary-table-problems.html所以要修复我正在创建临时表的副本:CREATETEMPORARYTABLEIFNOTEXISTSearnings_temp_oneAS(SELECT*FROMearningsWHEREearning_account_id=?);CREATETEMPORARYTABLEIFNOTEXISTSearnings_temp_twoAS(SELECT*FROMearningsWHEREearn

mysql - 在 MySql 中多次访问临时表

我曾尝试使用临时表作为SELECT语句的中间结果保存器。问题是我无法在其他查询语句中多次访问临时表,我希望这是可能的,即使临时表无用。在MySql中是否有临时表的替代方法允许我提取我的SQL语句。我不能使用存储过程(不能从公司使用的网络框架版本访问它们)并且我不想使用游标。编辑:我的代码看起来有点像这样:创建临时表:CREATETEMPORARYTABLEdates_with_entries(seqINTNOTNULLAUTO_INCREMENTPRIMARYKEY,datumVARCHAR(32));INSERTINTOdates_with_entries(datum)SELECTd

mysql - 有没有更好的方法来为 MySQL 中的临时表分配权限?

我们的用户以相当低级别的用户身份登录生产数据库,在数据库级别授予SELECT,并在他们需要访问的特定表上授予INSERT/UPDATE/DELETE。他们也有创建临时表的权限(我们需要他们来进行一些更复杂的查询)。问题是,虽然他们可以创建临时表,但他们无权将INSERT插入其中!我们发现的一种解决方法是创建一个“真实的”(持久的?)同名表(但只有一个字段)并授予他们插入该表的权限。然后,当创建具有相同名称的临时表时,系统将使用它,而不是持久表。mysql>CREATETEMPORARYTABLE`testing`(`id`INTEGERAUTO_INCREMENTPRIMARYKEY,

mysql - 将数据从实时 MySQL 数据库复制到临时服务器的策略

我有一个实时MySQL数据库,它太大而无法定期将实时数据复制到暂存服务器。是否有一种方法可以仅获取上周的更改并打算每周运行该脚本?是否每个表都必须添加一个updated时间戳字段才能实现此目的? 最佳答案 我不知道“太大而无法定期复制”有多大,但我使用SQLyog同步数据库。它智能地只对已更改的记录进行插入/更新/删除。我强烈推荐它。 关于mysql-将数据从实时MySQL数据库复制到临时服务器的策略,我们在StackOverflow上找到一个类似的问题: h

mysql - 临时表在 PHPMyAdmin 中不起作用

我运行这个查询CREATETEMPORARYTABLEusercountSELECT*FROMusers我收到这条消息YourSQLqueryhasbeenexecutedsuccessfully(Querytook0.1471sec)但是当我尝试使用访问新创建的表时SELECT*FROMusercount我收到这个错误#1146-Table'abc_site.usercount'doesn'texist不知道为什么,我需要说明一下,我事先已经进行了大量的谷歌搜索。我的PHPMyAdmin版本是3.5.2.2和MySQL5.5.27 最佳答案

mysql - 在 SQL 中添加一个临时列,其中的值取决于另一列

我有这张表:ID|name|result|--------------------1|A|1|--------------------2|B|2|--------------------3|C|1|--------------------1|A|2|--------------------4|E|2|--------------------我想在|result|旁边添加一个新的临时列,其中result=1的值应为100,而result=2的值应为80,因此它应如下所示:ID|name|result|NewColumn|-------------------------------1|A