MySQL问题越大=越慢?
请容忍我,我对MySQL编码没有太多信心。 我正在运行一个类似于twitter的网站。然而,用户获得的追随者越多,站点在特定用户配置文件上运行的速度就越慢。 拥有少数追随者的用户具有相当快的页面加载速度 下面是MySQL的“关注者”部分,你们中的任何人都能看到代码中的问题,或者解释为什么会发生这种情况吗 提前谢谢 代码:MySQL问题越大=越慢?,mysql,Mysql,请容忍我,我对MySQL编码没有太多信心。 我正在运行一个类似于twitter的网站。然而,用户获得的追随者越多,站点在特定用户配置文件上运行的速度就越慢。 拥有少数追随者的用户具有相当快的页面加载速度 下面是MySQL的“关注者”部分,你们中的任何人都能看到代码中的问题,或者解释为什么会发生这种情况吗 提前谢谢 代码: 首先,为什么要对一个不断更新的表使用MyISAM引擎,这会减慢应用程序的速度,因为MyISAM使用表级锁,这意味着选择必须等待插入操作完成后才能运行,始终对此类表使用InnoD
首先,为什么要对一个不断更新的表使用MyISAM引擎,这会减慢应用程序的速度,因为MyISAM使用表级锁,这意味着选择必须等待插入操作完成后才能运行,始终对此类表使用InnoDB 第二件事我认为最好为
follower
和follower
中的每一个使用一个键,因为现在任何类似的查询,其中follower=X
都不会使用索引follower
如果您可以显示您的
选择的示例
,也许您会得到更多的建议。任何问题都可能是由于您的查询而不是您的表结构造成的。因此,请发布查询以检索数据,以及输出。冒着听起来愚蠢的风险,我在哪里能看到这些查询?@AndyH:你是为这个网站写代码还是只是在做数据库维护?嗨,不,这是一个买来的脚本的一部分。我想弄明白,当一个用户有很多“追随者”时,它为什么会变慢。谢谢你的回复。我曾考虑过使用InnoDB,但MySQL是一个购买的脚本的一部分(所以你会认为它是正确的!)我确实将它改为InnoDB,但没有什么不同?我对这类事情一无所知,所以我现在所做的一切都是反复尝试。脚本提供的完整MySQL会有帮助吗?@AndyH不,只需向我们展示一些您的选择。然后,根据这一点,人们会建议他们是否想看完整的脚本。至于innoDB,即使您没有直接看到任何差异,我可以告诉您,对于这样的表,它比innoDB好1000%。CodeBird,我知道这听起来很可笑,但是选择什么呢?我对这类事情真的很陌生。CodeBird-你想要HTML的片段吗*对不起,听起来很愚蠢,我同意。我真的需要了解和理解SQL。对不起,浪费了大家的时间。我去了解一下。谢谢
CREATE TABLE IF NOT EXISTS `followers` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`follower` int(11) unsigned NOT NULL,
`following` int(10) unsigned NOT NULL,
`status` enum('0','1') CHARACTER SET utf8 NOT NULL DEFAULT '1' COMMENT '0 Trash, 1 Active',
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `follower` (`follower`,`following`,`status`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;