在我的PHP应用程序中,我在一台服务器上的MySQL MyISAM分区表中有一个重达200GB的470M行表.用法包括70%写入/ 30%读取.我正在努力提高性能.目前的主要问题是由于表级锁定导致的读/写争用.我试图在两个选项之间做出决定:
问题是,在尝试仍然避免分片数据的同时,并考虑到我使用RDMS MySQL作为简单的键值存储这一事实,两种方法之间的性能之间存在很大差异,还是NoSQL的主要优势在于转移到分布式系统?
我想在PHP中获取flickr图片的缩略图.
我所看到的只是他们的API:http: //www.flickr.com/services/api/misc.urls.html
哪个是矫枉过正.在instagr.am/twitpic和其他人中,我发现了一种非常简单的方法(只需将url添加到请求中).
flickr有没有选项我不见了?
我正在尝试使用mysql FULLTEXT索引MATCH功能为自动完成搜索框创建一个良好的匹配查询.我希望它是非常性能优化的,如果可能的话可以灵活处理拼写错误(没有太多的工作).
搜索适用于用户,其中每个用户都有一个名称和一个屏幕名称.我想匹配它们的组合.例如,如果用户名是"Guy Kawasaki"并且屏幕名称是"gkawasaki",则查询"gkawas"和"Guy K"将指向他.此外,我希望结果按照匹配分数和我在表格中持有的等级的组合进行排序.
目前我所做的是两个不同的查询:
SELECT *, MATCH (name) AGAINST ('+Guy +K*' IN BOOLEAN MODE) AS SCORE
FROM
users
WHERE
MATCH (name) AGAINST ('+Guy +K*' IN BOOLEAN MODE)
ORDER BY SCORE, grade DESC LIMIT 5
SELECT *, MATCH (screen_name) AGAINST ('+Guy +K*' IN BOOLEAN MODE) AS SCORE
FROM
users
WHERE
MATCH (screen_name) AGAINST ('+Guy +K*' IN BOOLEAN MODE)
ORDER BY SCORE, grade DESC LIMIT 5
Run Code Online (Sandbox Code Playgroud)
对于我使用两个查询并且对BOOLEAN MODE和所有"+"符号都不太确定的事实我不是很满意.我怎样才能改善这个?实现这种自动完成的最佳方法是什么?
我目前正在运行的DELETE查询所花的时间比预期的要长得多(已经10小时了!)。我想通过phpmyadmin进程杀死它,但是担心会发生什么。他自动回滚会花费很多时间吗?当前查询状态显示为“正在更新”。
我在Google-Chrome中遇到一个奇怪的问题,当一个标签打开时,一个长时间运行的脚本,一个不同的标签处于"挂起"状态,直到第一个标签完成.我创建了一个小小的小提琴来重现这个问题,我也在这里包括在Safari上运行的结果.当添加这个小提琴时,?q = a和?q = b它解决了这个问题.但是,当我打电话给两个不同的智能网址(http://domain.com/a/v1 http://domain.com/a/v2甚至http://dev.domain.com/a/v6或者http://dev.domain.com/b/v8)时,他们也会导致这种"未决"行为.
小提琴:
<?php
echo time();
echo '<br>Now: '. date('h:m:s');
sleep(10);
echo time();
echo '<br>Now: '. date('h:m:s');
?>
Run Code Online (Sandbox Code Playgroud)
在Google Chrome中打开两个并发标签时,输出:1:
Now: 11:01:12
1357117332
Now: 11:01:22
1357117342
Run Code Online (Sandbox Code Playgroud)
2:
Now: 11:01:22
1357117342
Now: 11:01:32
1357117352
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,虽然我几乎在同一时间开始它们,但是第二个在它开始之前等待第一个完成它们.
在Safari上运行时也是如此:1:
Now: 10:01:36
1357116336
Now: 10:01:46
1357116346
Run Code Online (Sandbox Code Playgroud)
2:
Now: 10:01:37
1357116337
Now: 10:01:47
1357116347
Run Code Online (Sandbox Code Playgroud)
您可以注意到,在Chrome中,第二个脚本仅在第一个脚本完成后启动,而在Safari中,它们一起工作.是什么导致这种奇怪的行为?我应该寻找哪些信息来帮助调试原因?
更新:添加?q = a和?q = b的答案可以解决这个问题是正确的.现在我想弄清楚为什么我在这个问题上运行,尽管我打电话给两个不同的网址.我使用智能URL,URL格式domain.com/dir/var1和domain.com/dir/var2甚至dev.domain.com/var6都会导致同样的效果.是什么导致这个?
我知道这个正则表达式将文本分成句子.有人能帮我理解怎么样?
/(?<!\..)([\?\!\.])\s(?!.\.)/
Run Code Online (Sandbox Code Playgroud) 我有兴趣使用右侧\左箭头,空格键等JS事件.想知道什么是正确的方法.我想在这样的用户交互中滑动照片,使DIV出现等.
我想到了jQuery的可能实现,例如http://api.jquery.com/event.which/ 虽然我不确定这是最好的方法.
以下是这种UI实现的两个很好的例子(他们是如何做到的?) http://www.thesixtyone.com ; http://www.pictorymag.com/showcases/summer-jobless
我更喜欢那种#kinda guy,正在寻找正确的方向来挖掘.谢谢.
我有以下数据
user_id days date
88 2 2013-08-25
88 4 2013-08-23
88 18 2013-08-5
88 1 2013-08-4
88 2 2013-08-2
73 11 2013-08-2
299 4 2013-08-2
12 983 2013-08-2
Run Code Online (Sandbox Code Playgroud)
我正在尝试获取order by DATE desc特定user_id的所有最近的行(),直到days列的SUM 大于X.例如,在这种情况下,如果X = 7,我将获得SUM(天)= 24的三个第一行.