有时在 SNAFU 期间,我必须跑kill query xxxxxxx二十或三十次。任何形式的kill all命令我失踪?
因为我不喜欢打字。
我正在将 MySQLi 用于我的网络应用程序,但是每当我想访问某个特定页面时,我都会得到mysqli_connect() [function.mysqli-connect]: (42000/1203): User ***_user already has more than 'max_user_connections' active connections.
我已经尝试关闭所有连接,但这并没有改善情况。
有没有办法确切知道在任何特定时刻打开了哪些连接或任何其他可以帮助我解决此问题的有用数据?
顺便说一句,我使用的是 PHP 5.2.17 和 MySQL 5.1。
我试图解决以下问题大约一个小时,但仍然没有进一步解决。
好的,我有一张桌子(MyISAM):
+---------+-------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+-------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| http | smallint(3) | YES | MUL | 200 | |
| elapsed | float(6,3) | NO | | NULL | |
| cached | tinyint(1) | YES | | NULL | |
| ip | int(11) | NO | | NULL | |
| date | timestamp | …Run Code Online (Sandbox Code Playgroud) 我们在 Windows Server 2008 R2 上运行 MySQL 5.1。
我们最近一直在对我们的数据库进行一些诊断,并发现了一些我们无法解释的令人不安的伪影。当我们有需要很长时间(> 2000 毫秒)的查询时,我们添加了一些代码来记录。结果令人惊讶(并且可能是对我们僵局的解释)。
有时,通常只需要很少时间(<10 毫秒)的查询需要 4 到 13 秒。需要明确的是,这些是持续运行(每秒数次)并且不会受到这些查询时间峰值影响的查询。
我们已经检查了我们的索引,寻找任何明显的错误,但运气不佳。
更新
人表:
| people | CREATE TABLE `people` (
`people_id` bigint(20) NOT NULL AUTO_INCREMENT,
`company_id` bigint(20) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`temp_password` varchar(10) DEFAULT NULL,
`reset_password_hash` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
`phone` varchar(32) DEFAULT NULL,
`mobile` varchar(32) DEFAULT NULL,
`iphone_device_id` varchar(160) DEFAULT NULL,
`iphone_device_time` datetime DEFAULT NULL,
`last_checkin` datetime DEFAULT NULL, …Run Code Online (Sandbox Code Playgroud) 我正在尝试确定 MySQL 优化器在估计(准备)查询的成本时从何处获取可用于表的索引列表。
我有一个带有 VARCHAR(20) 列的大表,我需要将其修改为 VARCHAR(50) 列。通常,在此特定表上执行 ALTER TABLE(添加 TINYINT)大约需要 90-120 分钟才能完成,因此我实际上只能在周六或周日晚上执行此操作以避免影响数据库的用户。如果可能,我想在此之前进行此修改。
该列也被索引,我认为这会使 ALTER TABLE 变慢,因为它必须在修改列长度后重建索引。
Web 应用程序设置在 MySQL 复制环境中(26 个从站和一个主站)。我记得曾经在某处读到过一种方法是首先在每个从站上执行 ALTER TABLE(最大限度地减少对用户的影响),然后在主站上执行此操作,但那不会尝试将 ALTER TABLE 命令复制到从站吗?
所以我的问题是:对我来说,在对用户的干扰最小的情况下修改此表的最佳方法是什么?
编辑:该表是 InnoDB。
我有一个相当大的 MySQL (5.1) 数据库作为 RDS 实例在 Amazon 中运行。我正在努力将它从亚马逊迁移出来。为了顺利做到这一点,我想将新硬件设置为 RDS 实例的只读副本。
我知道 RDS 支持 RDS 内的复制。有没有办法将其配置为复制到不在 RDS 中的主机?
在 MySQL 中打开和关闭数据库连接(对于 Web 应用程序)的 CPU 密集程度如何
在 SO,最近有人问为什么 ORDER BY 不使用索引?
这种情况涉及 MySQL 中的一个简单的 InnoDB 表,包括三列和 10k 行。其中一列,一个整数,被索引——OP 试图检索他在该列上排序的整个表:
SELECT * FROM person ORDER BY age
Run Code Online (Sandbox Code Playgroud)
他附上了EXPLAIN输出,显示这个查询是用 a filesort(而不是索引)解决的,并询问为什么会这样。
尽管提示 FORCE INDEX FOR ORDER BY (age) 导致使用索引,但有人回答(通过其他人的支持评论/赞成)索引仅用于在所选列都从索引中读取时进行排序(即通常Using index在Extra列中指示的EXPLAIN输出)。后来给出了一个解释,遍历索引然后从表中获取列会导致随机 I/O,MySQL 认为这比filesort.
这似乎与关于ORDER BY优化的手册章节背道而驰,它不仅传达了强烈的印象,即满足ORDER BY索引比执行额外排序更可取(实际上,filesort是快速排序和归并排序的组合,因此 必须有一个下限; 虽然按顺序遍历索引并寻找表应该是 - 所以这是完全有道理的),但它也忽略了这种所谓的“优化”,同时还说明了:Ω(nlog n)O(n)
以下查询使用索引来解析
ORDER …
在 MongoDB 中备份大型数据集的推荐方法是什么?假设我们有大约 10TB 的数据大小 - 您将如何备份它?
我们正在考虑一个隐藏的、可能延迟的副本集节点。延迟将保护我们免受整个数据库的意外丢失。这是一个可行的解决方案,您还建议调查哪些其他选项?
谢谢!
mysql ×9
replication ×3
index ×2
innodb ×2
performance ×2
alter-table ×1
amazon-rds ×1
backup ×1
command-line ×1
datetime ×1
mongodb ×1
myisam ×1
mysql-5 ×1
mysql-5.1 ×1
mysql-5.5 ×1
optimization ×1
order-by ×1
php ×1