小编JIS*_*one的帖子

杀死所有查询 - MySQL

有时在 SNAFU 期间,我必须跑kill query xxxxxxx二十或三十次。任何形式的kill all命令我失踪?

因为我不喜欢打字。

mysql command-line

17
推荐指数
2
解决办法
3万
查看次数

如何在 MySQL 中找到列的中值?

我只能想象用两个数据库查询来做这件事。第一个查找数据库中的行数,第二个ORDER BY在我感兴趣的列上选择一个,LIMIT X, 1其中 X 是行数的一半。

有没有一种简单的方法可以只用一个查询来做到这一点?

现在我在计算中使用平均值,但我认为平均值会更好;这些值没有上限,它们从下限为 0。


编辑:是的,我的意思是说“中位数”,但有一些大脑错误并搜索了“平均值”。我现在在stackoverflow 上找到了答案

mysql

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

如果该字段上的多列索引已存在,我是否需要向表添加新的单列索引?

我有一个表,UNIQUE_job_id__和上有一个多列索引__keyword_id__

__job_id__如果我有一个GROUP BY对该列执行 a 的频繁查询,我还需要添加另一个索引吗?

(在 1 亿行时可能需要一段时间。这就是为什么我要问而不仅仅是做)

mysql index

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

MySQL 仍然以这种方式处理索引吗?

在 MySQL 中删除重复索引需要很长时间,所以在我等待的时候,我搜索了它并找到了 2006 年的这篇文章,谈论 MySQL 如何处理ADDDROP索引。

如果表 T 是具有四个索引(ndx1、ndx2、ndx3、ndx4)的 MySQL 表,并且您想“更改表 T 删除索引 ndx3;” 这正是幕后发生的事情:

1) MySQL 将 T.MYD 复制到临时表,即 S.MYD 和零字节 S.MYI。2) MySQL 确实 'alter table S add index ndx1 (...); 3) MySQL 确实 'alter table S add index ndx2 (...); 4) MySQL 'alter table S add index ndx4 (...); 5) MySQL 删除 T.MYD 并删除 T.MYI 6) MySQL 将 S.MYD 重命名为 T.MYD,并将 S.MYI 重命名为 T.MYI

这仍然是真的吗?他的建议是否仍然有效?

给定具有四个索引(ndx1、ndx2、ndx3、ndx4)的同一个 MyISAM 表 T 并且您想“更改表 T …

mysql myisam performance index

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

什么是用户连接 - 何时创建和销毁?

我们在外部站点上遇到了间歇性错误:

警告:mysql_connect() [function.mysql-connect]:用户“557574_prod”已超出“max_user_connections”资源(当前值:10)

这会阻止该站点被访问并有效地将其关闭。

(显然增加 'max_user_connections' 可以解决这个问题,但这不是我们的托管方案的一个选项)

我可能已经“修复”了它,但我不是 100% 确定我理解这个问题,我想说清楚。我认为问题一定是由太多的 cron 作业耗尽连接造成的(我们每分钟都有几个运行),我减少了 cron 作业的数量,这似乎减少了错误数量。我为 cron 作业创建了一个单独的用户帐户,所以如果这是问题,现在应该解决。

但是我们的日志系统在错误发生时并没有记录下来,所以我还是很担心。

所以我问:MySQL 中的“user_connection”是什么构成的?

  • 每个数据库调用是否有单独的连接?
  • 如果没有,数据库调用何时需要单独的连接?
  • 为什么这个错误只会发生在现场制作网站上?也许每个唯一的 ip 或 simialr 都有一个单独的连接?

我觉得我多虑了。. .

mysql max-connections

7
推荐指数
1
解决办法
7807
查看次数

当我无法控制数据库变量时处理临时表

我有过类似的事情无法控制tmp_table_sizemax_heap_table_size,所以作为我们成长的表,要求临时表的查询所用的时间是几何级数增长。

我想知道是否有办法防止 MySQL 对这些查询使用临时表?在这种情况下最好的方法是什么:

这是最大的罪犯的一个例子:

SELECT `skills`.`id`
FROM (`jobs_skills`)
JOIN `jobs` ON (`jobs`.`id` = `jobs_skills`.`job_id`)
JOIN `skills` ON (`skills`.`id` = `jobs_skills`.`skill_id`)
WHERE `jobs`.`job_visibility_id` = 1
AND `jobs`.`active` = 1
AND `skills`.`valid` = 1
AND `jobs_skills`.`skill_id` IN (96,101,103,108,121,2610,99,119,2607,102,104,112,113,122,1032,1488,2608,109,126,1438,2310,2318,2622,118,1046,1387,2609,100,116,123,2611,2612,2616,2618,114,127,1562,1587,1608,2276,2615,125,1070,1071,1161,1658,2613,2614,2617,105,110,111,120,1394,1435)
GROUP BY `jobs_skills`.`job_id`
Run Code Online (Sandbox Code Playgroud)

其中copying to temp table耗时 107 秒,占总查询时间的 99%。

尽管担心 tl;dr 综合征,我还是提供。. .

更多细节

以下是EXPLAIN查询语句:

+----+-------------+-------------+--------+----------------------+--------------+---------+----------------------------------+--------+----------------------------------------------+
| id | select_type | table       | type   | possible_keys        | key          | key_len | ref                              | rows …
Run Code Online (Sandbox Code Playgroud)

mysql innodb query temporary-tables

7
推荐指数
1
解决办法
609
查看次数

前后端分开的数据库

我正在处理的站点有很多后端/cron 活动,因此每天每秒执行 5 到 15 个查询。这会使页面加载速度减慢一秒或更长时间。

我在想最好的办法是创建两个数据库并每天同步它们。然而:

  • 我不知道该怎么做
  • 我担心同步会很慢并阻止数据库访问。我真的不喜欢让网站离线的想法,即使是凌晨 3 点的 10 分钟。

所以我想知道:

  • 单独的数据库是解决这个问题的最佳解决方案,还是其他更好的方法?
  • 如何在不过多干扰“用户体验”的情况下同步数据库?

非常感谢!

顺便说一句,在“可以”的服务器上运行 PHP/MySQL。

mysql

5
推荐指数
1
解决办法
1539
查看次数

使用什么程序来更改数据库服务器上的设置?

决定设置主从复制后,我找到了这篇文章,这似乎正是我想要的。

所以我在 Navicat 中启动了 MySQL 控制台来尝试一切,命令什么也不做。所以似乎其中之一是问题:

  • MySQL 控制台不是我想要的工具
  • Navicat 上的 MySQL 控制台不完美
  • 我做错了

这是我链接的文章的第一步:

/sbin/ifconfig

在远程服务器连接上什么都不做(使用 Navicat 中的控制台),但在我本地机器上 WAMP 服务器上的 MySQL 控制台上工作正常。


更新:

第二天 - 头脑清醒 - 意识到我试图做的事情可能是不可能的,也没有必要。网站托管在加利福尼亚的一些机架空间服务器上,我怀疑他们希望我弄乱他们的服务器设置。

我试图建立单独的数据库,以便写入繁重的后端不会干扰前端的读取。今天早上我重新处理了导致表锁定的调用,现在缓慢的后端查询不应该锁定前端所需的任何表。

所以基本上问题解决了。这就是为什么我应该只在早上发帖,而不是在编码 8-10 小时后发帖。

mysql replication

5
推荐指数
1
解决办法
258
查看次数