我们如何从 mysqldump 文件中恢复不同名称的 mysql 数据库。我不想打开转储文件并对其进行编辑。还有其他更好的方法吗?
我在MySql 数据库中工作,有一个这样的表:
+--------------+
| table_name |
+--------------+
| myField |
+--------------+
Run Code Online (Sandbox Code Playgroud)
...我需要进行很多这样的查询(列表中有 5-10 个字符串):
SELECT myField FROM table_name
WHERE myField IN ('something', 'other stuff', 'some other a bit longer'...)
Run Code Online (Sandbox Code Playgroud)
将有大约 24.000.000 个唯一行
1)我应该使用FULLTEXTor 和INDEXkeyVARCHAR(150)吗?
2)如果我将字符从 150 增加到 220 或 250 ......会产生很大的不同吗?(有没有办法计算它?)
3)正如我所说,它们将是唯一的,所以myField应该是一个PRIMARY KEY。向已经是 VARCHAR INDEX/FULLTEXT 的字段添加 PRIMARY KEY 是不是很少见?
大多数表使用 MySQL 5.6 和 InnoDB 存储引擎。InnoDB 缓冲池大小为 15 GB,Innodb DB + 索引大约为 10 GB。服务器有 32GB RAM 并运行 Cent OS 7 x64。
我有一张包含大约 1000 万条记录的大表。
我每 24 小时从远程服务器获取更新的转储文件。该文件为 csv 格式。我无法控制那种格式。该文件约为 750 MB。我尝试将数据逐行插入 MyISAM 表,花了 35 分钟。
我只需要从文件中的每行 10-12 中取出 3 个值并在数据库中更新它。
实现这样的目标的最佳方法是什么?
我需要每天都这样做。
目前 Flow 是这样的:
以上操作大约需要30-40 分钟才能完成,在执行此操作时,还有其他更新正在进行中,这给了我
超过锁等待超时;尝试重新启动事务
使用LOAD DATA LOCAL INFILE. 在 MyISAM 中,38.93 sec在 InnoDB 中需要 7 分 5.21 秒。然后我做了:
UPDATE table1 t1, table2 t2
SET …Run Code Online (Sandbox Code Playgroud) 我从 5.5 升级到 mysql 5.6,现在我的日志在启动时到处都是这样的消息
我在这里找到了一个可能的解决方案,但它似乎不是官方的。 http://forums.mysql.com/read.php?22,578559,579891#msg-579891
2013-12-06 21:08:00 7f87b1d26700 InnoDB: Error: Table "mysql"."innodb_table_stats" not found.
2013-12-06 21:08:00 7f87b1d26700 InnoDB: Recalculation of persistent statistics requested for table "drupal"."sessions" but the required persistent statistics storage is not present or is corrupted. Using transient stats instead.
2013-12-06 21:08:07 7f903c09c700 InnoDB: Error: Table "mysql"."innodb_table_stats" not found.
Run Code Online (Sandbox Code Playgroud)
任何官方解决方案或 100% 修复?
我在某些具有大量可能结果集的数据库查询上遇到了性能问题。
有问题的查询,我AND在 WHERE 子句中有三个
条款的顺序重要吗?
就像,如果我把 ASI_EVENT_TIME 子句放在第一位(因为这会从任何子句中删除大部分结果。
这会改善查询的运行时间吗?
询问:
SELECT DISTINCT activity_seismo_info.*
FROM `activity_seismo_info`
WHERE
activity_seismo_info.ASI_ACTIVITY_ID IS NOT NULL AND
activity_seismo_info.ASI_SEISMO_ID IN (43,44,...,259) AND
(
activity_seismo_info.ASI_EVENT_TIME>='2011-03-10 00:00:00' AND
activity_seismo_info.ASI_EVENT_TIME<='2011-03-17 23:59:59'
)
ORDER BY activity_seismo_info.ASI_EVENT_TIME DESC
Run Code Online (Sandbox Code Playgroud)
查询的解释:
+----+-------------+---------+-------+---------------------------+--------------+---------+------+-------+-----------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+---------+-------+---------------------------+--------------+---------+------+-------+-----------------------------+
| 1 | SIMPLE | act...o | range | act...o_FI_1,act...o_FI_2 | act...o_FI_1 | 5 | NULL | 65412 …Run Code Online (Sandbox Code Playgroud) 常见字段的长度和数据类型最常见的最佳实践是什么,例如:
等等....
我想限制从
SHOW TABLE STATUS
Run Code Online (Sandbox Code Playgroud)
MySQL 5.1 中的命令。有没有办法通过SELECT语句获得相同的信息,以便我可以以正常方式操作结果?
我登录到我的服务器来检查数据库的状态,并注意到SHOW PROCESSLIST;有大量非常旧的连接正在休眠。
在连接应该被杀死之前,连接时间限制应该持续多长时间?
如何在 MySQL 5.0.51a-3ubuntu5.4 中设置时间限制?
笔记:
我正在使用 PHP 5.2.x 和 symfony 框架 1.2。
我只需要转储存储过程:没有数据,没有表创建。如何使用 mysqldump 执行此操作?
当我运行 mysqldump 时,出现错误:
mysqldump: Got error: 1449: The user specified as a definer ('root'@'foobar') does not exist when using LOCK TABLES
Run Code Online (Sandbox Code Playgroud)
这是有道理的,因为它foobar是一台不再存在的旧机器。
如何将所有表的定义器更改为 'root'@'localhost'?