我有一个大约120k行的表,其中包含一个带有BLOB的字段(每个条目的大小不超过1MB,通常要少得多).我的问题是每当我运行查询询问此表上的任何列(不包括BLOB)时,如果文件系统缓存为空,则需要大约40'才能完成.同一个表上的所有后续查询都需要少于1''(从命令行客户端,在服务器本身上进行测试).查询中返回的行数从空集到60k +不等
我已经删除了查询缓存,因此它与它无关.该表是myisam,但我也尝试将其更改为innodb(并设置ROW_FORMAT = COMPACT),但没有任何运气.
如果我删除BLOB列,查询总是很快.
所以我假设服务器从磁盘(或其中的一部分)读取blob,文件系统缓存它们.问题是在流量高且内存有限的服务器上,文件系统缓存每隔一段时间刷新一次,因此这个特定的查询一直给我带来麻烦.
所以我的问题是,有没有办法大幅加快速度,而无需从表中删除blob列?
这里有两个示例查询,一个接一个地运行,以及解释,索引和表定义:
mysql> SELECT ct.score FROM completed_tests ct where ct.status != 'deleted' and ct.status != 'failed' and score < 100;
Empty set (48.21 sec)
mysql> SELECT ct.score FROM completed_tests ct where ct.status != 'deleted' and ct.status != 'failed' and score < 99;
Empty set (1.16 sec)
mysql> explain SELECT ct.score FROM completed_tests ct where ct.status != 'deleted' and ct.status != 'failed' and score < 99;
+----+-------------+-------+-------+---------------+--------+---------+------+-------+-------------+
| id | select_type | …Run Code Online (Sandbox Code Playgroud) 我有这些小桌子,item并且category:
CREATE TABLE `item` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(150) NOT NULL,
`category_id` mediumint(8) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `name` (`name`),
KEY `category_id` (`category_id`)
) CHARSET=utf8
CREATE TABLE `category` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(150) NOT NULL,
PRIMARY KEY (`id`),
KEY `name` (`name`)
) CHARSET=utf8
Run Code Online (Sandbox Code Playgroud)
我插入了100个类别和1000个项目.
如果我运行这个:
EXPLAIN SELECT item.id,category.name AS category_name FROM item JOIN category ON item.category_id=category.id;
Run Code Online (Sandbox Code Playgroud)
然后,如果表的引擎是InnoDB我得到:
+----+-------------+----------+-------+---------------+-------------+---------+--------------------+------+-------------+
| id | select_type | table | type …Run Code Online (Sandbox Code Playgroud) 我正在尝试从“example.com”设置一个 cookie,以便只能由“site.example.com”访问。问题是由于某种原因这不起作用。例如,下面的代码可以正确运行:
setcookie('my_var', "hello", time()+3600, "/", 'example.com');
Run Code Online (Sandbox Code Playgroud)
也就是说,当从 example.com 运行时,我可以从 site.example.com 看到“my_var”cookie。然而,下面的代码没有设置cookie:
setcookie('my_var', "hello", time()+3600, "/", 'site.example.com');
Run Code Online (Sandbox Code Playgroud)
(如果我在前面加上一个点,例如“.site.example.com”,也不会)
使用 php 5.3.8 和 Chromium
我有2个myISAM表,分别称为“测试”和“ completed_tests”,一个表有170个条目,另一个表有118k条目。当我运行此查询时:
SELECT ct.archive, ct.status, ct.score, ct.users_LOGIN, t.lessons_ID, t.content_ID, t.keep_best
FROM completed_tests ct,tests t
WHERE ct.status != 'deleted' and ct.status != 'incomplete' and t.id=ct.tests_ID and t.lessons_ID=10;
Run Code Online (Sandbox Code Playgroud)
然后大约需要30秒才能完成。随后对同一查询或相关查询的调用(例如,不同的lessons_ID)更快。即使我重置查询缓存或重新启动mysql服务器,它们仍然保持更快的速度。我想这意味着表被缓存到内存中(并留在那里)。我的问题是,该特定查询似乎在运行此应用程序的高流量站点上引起了问题(我想这是因为服务器的内存不足并清空了其缓存?)。我的问题是:
运行说明给出:
mysql> explain SELECT ct.archive, ct.status, ct.score, ct.users_LOGIN, t.lessons_ID, t.content_ID, t.keep_best FROM completed_tests ct,tests t WHERE ct.status != 'deleted' and ct.status != 'incomplete' and t.id=ct.tests_ID and t.lessons_ID=10;
+----+-------------+-------+------+-----------------+----------+---------+---------------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | …Run Code Online (Sandbox Code Playgroud) 我在github有一个(私人)项目,开发人员团队在这里进行更改.客户现在要求在他们自己的系统副本上开发一些繁重的自定义.一个新团队将在这个项目上工作,但我不希望这个团队有权访问原始存储库.所以我在github上创建了一个新的存储库,并使用原始项目中的代码对其进行初始化.
但是,我仍然希望第二个项目能够在原始项目上完成更新.如何设置存储库以满足此需求?
或者,如果我要保留一个项目,是否有办法让新团队只访问其中的特定分支?
我有以下PHP代码:
$foo = new stdClass();
$foo->test='hello world';
$bar = new stdClass();
$bar->foo = json_encode($foo);
$encoded_string = json_encode($bar);
Run Code Online (Sandbox Code Playgroud)
该$encoded_string包含:
{"foo":"{\"test\":\"hello world\"}"}
Run Code Online (Sandbox Code Playgroud)
我想从javascript解析此字符串($.parseJSON例如使用jQuery ):
var data = $.parseJSON('{"foo":"{\"test\":\"hello world\"}"}');
console.log(data);
Run Code Online (Sandbox Code Playgroud)
我希望记录以下内容:
Object {foo: '{"test":"hello world"}'}
Run Code Online (Sandbox Code Playgroud)
但是Unexpected token t运行它时出现错误(使用铬)
如何在Javascript中解析此json字符串?如果有人想尝试,这是一个小提琴。
我在Windows Server 2008环境中安装了apache 2.4.4,php 5.4.17.我使用了http://www.apachelounge.com/viewtopic.php?p=25084上的二进制文件
这些二进制文件包括APC as apcu.dll.加载时,在[APC]下的phpinfo中,它说:
APC support: Emulated
有人知道这在实践中意味着什么吗?与标准APC相比是否会有任何差异?(为此,btw,似乎不存在此设置的工作二进制文件)
以下代码片段在FF/IE中运行正常(没有显示任何内容),但在chrome/safari中,显示第1个跨度!
<p>
<span style = "display:none"><div>inner</div></span>
<span style = "display:none"><div>inner</div></span>
</p>
Run Code Online (Sandbox Code Playgroud)
谁有解释?