小编Pat*_*ick的帖子

如何优化大型数据库的mysqldump?

我有一个带有 InnoDB 数据库的 symfony 应用程序,它有 57 个表,大约 2GB。数据库的大部分大小驻留在单个表中(~1.2GB)。我目前正在使用 mysqldump 每晚备份数据库。

由于我的 comcast 连接,通常如果我手动运行转储,我与服务器的连接将在转储完成之前超时,导致我不得不重新运行转储。[我目前运行一个每晚执行转储的 cron,这仅适用于我手动运行的转储。]

有没有办法加快连接超时问题的转储,同时也可以限制服务器被这个进程占用的时间?

顺便说一句,我目前正在努力减少整个数据库的大小来解决这个问题。

mysql innodb mysqldump performance backup

198
推荐指数
6
解决办法
25万
查看次数

在 MySQL 中,WHERE 子句中列的顺序会影响查询性能吗?

我在某些具有大量可能结果集的数据库查询上遇到了性能问题。

有问题的查询,我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)

mysql mysql-5 performance

43
推荐指数
4
解决办法
4万
查看次数

MySQL 连接睡眠“太长”多长时间?

我登录到我的服务器来检查数据库的状态,并注意到SHOW PROCESSLIST;有大量非常旧的连接正在休眠。

在此处输入图片说明 在连接应该被杀死之前,连接时间限制应该持续多长时间?

如何在 MySQL 5.0.51a-3ubuntu5.4 中设置时间限制?

笔记:

我正在使用 PHP 5.2.x 和 symfony 框架 1.2。

mysql mysql-5

41
推荐指数
1
解决办法
12万
查看次数

MySQL InnoDB 崩溃事后分析

今天早上 MySQL 对我崩溃了。

除了标准的 MySQL 包含的数据库之外,我使用的一切都是 InnoDB。

我试图重新启动 MySQL 守护进程,但它失败了两次。

然后我重新启动了整个服务器,MySQL 正确启动并且从那以后一直运行良好。

初始崩溃的 mysqld 日志文件包含以下内容:

120927 10:21:05 mysqld_safe Number of processes running now: 0
120927 10:21:06 mysqld_safe mysqld restarted
120927 10:21:12 [Note] Plugin 'FEDERATED' is disabled.
120927 10:21:12 InnoDB: The InnoDB memory heap is disabled
120927 10:21:12 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120927 10:21:12 InnoDB: Compressed tables use zlib 1.2.3
120927 10:21:12 InnoDB: Using Linux native AIO
120927 10:21:13 InnoDB: Initializing buffer pool, size = 4.0G
InnoDB: …
Run Code Online (Sandbox Code Playgroud)

mysql innodb mysql-5.5 crash

29
推荐指数
1
解决办法
2万
查看次数

COUNT(1) 实际上算什么?

可能的重复:
select count(*) 和 select count(any_non_null_column) 之间有什么区别?

我听说人们普遍认为,在计算查询中的行数时,您不应该执行 a,COUNT(*)而应该对索引列进行计数。

我见过 DBA,在计算行数时,运行SELECT COUNT(1) FROM table;.

什么是1查询?

我试过输入其他数字 (2, 0, -1) 并且结果总是与使用 1 相同。

这只是一种快捷方式,而不是列出要计算的特定列吗?

使用常量与列出列名是否有任何性能差异?

我目前使用的是 MySQl 5.1.60。

mysql-5 count

10
推荐指数
1
解决办法
4万
查看次数

Web 管理员的替代数据库工具

我目前使用 phpmyadmin 进行大部分数据库管理。它工作得很好,但我对其他可能工作得更快/更有效/等的工具感兴趣......

在 *nix 机器上用于 MySQL 的最佳和/或替代管理工具是什么?

mysql tools

8
推荐指数
1
解决办法
1566
查看次数

更改了 max_allowed_pa​​cket 并仍然收到“数据包太大”错误

我使用 mysqldump 创建一个用于备份的平面文件。我已使用此文件在备用服务器上重新创建数据库。我在命令行上通过 ssh 运行导入过程,但收到多个Packet too Large错误。

我用更大的 max_allowed_pa​​cket(即 1000M)重新启动了 mysql,但仍然收到错误消息。我什至尝试在导入文件中设置 max_allowed_pa​​cket,仍然收到错误。

有没有办法确保设置 max_allowed_pa​​cket 和/或使用 mysqldump 来创建不会导致此问题的文件?

以供参考:

未压缩的 mysqldump 文件约为 2GB

数据库类型是 INNODB

mysql mysql-5 mysqldump backup

8
推荐指数
1
解决办法
7983
查看次数

基于用户的不同登录凭据

我为我的公司运行了一个 PHP symfony-framework web 应用程序,它对所有连接使用单一的数据库登录,无论用户是管理员还是客户端。

我知道更高安全性的系统通常为不同级别的用户使用不同的登录名。

无论是否使用框架,这是我应该使用的安全功能吗?

应用程序是基于 Web 还是基于 Intranet 有关系吗?

澄清一下:我是否应该为 symfony 创建一个插件来实现多个数据库登录,我是否应该为我创建的任何其他不基于框架的应用程序执行此操作?

如果您想知道,我正在使用 PHP5 和 MySQL。

mysql security

6
推荐指数
1
解决办法
474
查看次数

MySQL INNODB SELECT 查询在复制到 tmp 表时挂起

我有一个查询(似乎)随机挂在特定查询上。我的大多数网站用户在此查询运行时都没有问题,但有一些用户在网站上遇到超时问题,当我检查processlist它时,它被卡住了copying to tmp table

我相信硬盘驱动器没有跟上,这导致复制到 tmp 表时挂起。

我不相信我可以更有效地优化查询。我想知道是否可以将服务器的第二个硬盘驱动器设置为临时表存储,这样我就可以分散服务器上的一些负载。

The query:
SELECT DISTINCT  
    activity_seismo_info.ID, 
    activity_seismo_info.CREATED_AT, 
    activity_seismo_info.UPDATED_AT, 
    ....    
    activity_seismo_info.ASI_EXTRA_5, 
    seismo.ID, 
    ....    
    seismo.SEISMO_NOTES 

FROM `activity_seismo_info` 
    JOIN activity_info ON (activity_seismo_info.ASI_ACTIVITY_ID=activity_info.ID) 
    JOIN location ON (activity_info.ACTIVITY_LOCATION_ID=location.ID) 
    LEFT JOIN seismo ON (activity_seismo_info.ASI_SEISMO_ID=seismo.ID) 

WHERE location.ID='193' 

ORDER BY activity_info.ACTIVITY_EVENT_TIME DESC LIMIT 30
Run Code Online (Sandbox Code Playgroud)

我使用的是带有 2GB RAM 和两个硬盘驱动器的 P4(第二个硬盘驱动器未使用)

PHP5.2

MySQL 5.0.51a-3ubuntu5.4

带有 Propel 的 symfony 1.2 应用程序

更新

感谢@DTest 的建议,我发现我的查询在对结果运行限制之前返回了表中的所有行。但是为了将来参考,有没有办法设置 MySQL 以使用第二个硬盘驱动器作为临时表的“临时”驱动器?

mysql mysql-5 performance

6
推荐指数
1
解决办法
5111
查看次数

标签 统计

mysql ×8

mysql-5 ×5

performance ×3

backup ×2

innodb ×2

mysqldump ×2

count ×1

crash ×1

mysql-5.5 ×1

security ×1

tools ×1