我有一个小的(100行,5列)表格,完整显示控制面板功能。使用IntelliJ测试开发时,它会响应初始请求,但永远不会完成执行,因此从不提供任何内容。如果我将PHP文件部署到我的本地Web服务器,它会毫不犹豫地提供相同的内容。有时,当我加载不使用数据库访问的控制面板的部分时,它加载它就好了(尽管很慢)。我已经在我的cli / php.ini中提升了请求允许的最大内存,并且还增加了IntelliJ可用的内存。我的idea64.vmoptions如下:
-Xms128m
-Xmx3G
-XX:MaxPermSize=750m
-XX:ReservedCodeCacheSize=200m
-ea
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Djsse.enableSNIExtension=false
-XX:+UseCodeCacheFlushing
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-Dawt.useSystemAAFontSettings=lcd
如果我转储表,它会再次加载页面,所以我认为问题与IntelliJ允许php使用多少内存有关,但我对于要查找的内容感到非常难过。据我所知,该表唯一的特殊之处在于它使用了非常大的主键列。表结构如下:
CREATE TABLE IF NOT EXISTS `links` (
`url` VARCHAR(767) NOT NULL,
`link_group` INT(10) UNSIGNED NOT NULL,
`isActive` TINYINT(1) NOT NULL DEFAULT '1',
`hammer` TINYINT(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`url`),
KEY `group` (`link_group`)
)
ENGINE =InnoDB
DEFAULT CHARSET =utf8mb4,
ROW_FORMAT = COMPRESSED;
压缩行格式以允许所述大主键。如果不解决它,我该如何处理,找到原因?
我试着听从彼得的建议,但没有用。我开始认为这可能只是IntelliJ在我的情况下无法正常服务PHP。新表结构如下:
CREATE TABLE IF NOT EXISTS `links` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`url` varchar(767) NOT NULL,
`link_group` int(10) unsigned NOT NULL,
`isActive` tinyint(1) NOT NULL DEFAULT '1',
`hammer` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `url` (`url`),
KEY `group` (`link_group`),
FULLTEXT KEY `url_2` (`url`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPRESSED AUTO_INCREMENT=1 ;
为了清楚起见,MySQL性能似乎并不好。 SELECT * FROM链接在0.0005秒内执行。
答案 0 :(得分:0)
您可能想要重新创建该表。您的表定义可能会导致不可预测的行为。
尝试使用TEXT
字段的url
数据类型。另外,使用它作为PRIMARY键并不好笑。使用id
字段作为主键,然后将unique index
添加到url
字段(如果需要)。