最新的新浪PHP面试题(MySQL数据库,一天一万条以上的增量,怎么优化?)

ceopen 2009-05-04 04:23:02
1、MySQL数据库,一天一万条以上的增量,怎么优化?

2、写个函数来解决多线程同时读写一个文件的问题。

3. 写5个不同的自己的函数,来截取一个全路径的文件的扩展名,允许封装php库中已有的函数。
...全文
4665 52 打赏 收藏 转发到动态 举报
写回复
用AI写文章
52 条回复
切换为时间正序
请发表友善的回复…
发表回复
lmy0114 2011-07-03
  • 打赏
  • 举报
回复
话说都是高手
zty598416146 2011-06-28
  • 打赏
  • 举报
回复
我来说说第一题:每天1W的增量其实并不大,如果是mysql集群的话,应该很容易就能满足要求,具体优化,我想除非从架构或者开发者来考虑,纯粹从dba的角度来分析问题的话,就算这种程度的压力能撑得住,再大的话dba也是没办法的,这就要要求开发人员写的sql语句尽可能简单,避免一些复杂的查询。。是在不行 多加几层cache
wangjianbo88 2010-01-28
  • 打赏
  • 举报
回复
土土土土土
dcyhldcyhl 2009-06-02
  • 打赏
  • 举报
回复
第一题 应该是要分表,然后定时合并吧,也可考虑memcache缓存批量导入。
第二题 应该不是简单的靠 flock ,应该是用memcache cas ,底层会一直for尝试10000次来保证操作的原子性。
第三题 就是考查对PHP函数的掌握程度。explode pathinfo strstr substr 正则 preg_match 等。
TR@SOE 2009-06-02
  • 打赏
  • 举报
回复
第一题,我来抛点砖。

一天一万的数据插入量确实不算多。不过我考虑到的是类似新浪这样的一个应用,是属于典型的Single-Write-Multiple-Select的应用,也就是说,编辑人员(或者用户)创建(写入)一个帖子一般只有一次,但是会有很多很多人读这个帖子。

同时,考虑到帖子的时效性:过去的老帖子一般翻的人会少,新的帖子翻的人会多。

同时,考虑到全文搜索的必要性和及时性。

建议如下:

1. 至少建立一个分时段的归档数据库和当天增量数据库。所有的当天帖子都写到这个增量数据库中,并建立好索引和全文搜索支持。在插入时,由于平均8秒钟左右才会插入一个帖子,所以不用考虑暂时关闭索引的方法。
2. 每天定时进行归档的更新,并更新全文搜索索引。

抛砖了……

goodboyaoron 2009-06-02
  • 打赏
  • 举报
回复
一个也不会 不过我相信以后会懂的~
scofieldv 2009-06-01
  • 打赏
  • 举报
回复
第二个问题:
function swritefile($filename,$writecontent,$openmode='w'){
if(@$fp=fopen($filename,$openmode)){
flock($fp,2);
fwrite($filename,$writecont);
fclose($fp);
return true;
}esle{
return false;
}
}
flock()在windows 下有效;
he2005 2009-06-01
  • 打赏
  • 举报
回复
学习

n688com 2009-05-27
  • 打赏
  • 举报
回复
他所谓的每天一万 大概就是个说法 可能他想让你表达的是如果每天固定存入大量数据在某个表里 (同时要考虑的是大访问量)应该怎么优化设计
方法就多了去了 常用的方法就是 :建立良好的索引。良好的数据库设计。当需要操作的数据按年为单位的话,比如最常用的为当年的数据,那么设计时最简单的方法就是把存储该数据的表设计成已年为单位生成新表, 2008年可以生成 tb2008 到了2009年 数据自动生成并存储在tb2009表中 极大优化了查询速度
ceopen 2009-05-27
  • 打赏
  • 举报
回复
好样的 越来越有质量了!
天降大任于斯 2009-05-26
  • 打赏
  • 举报
回复
<?php
$path_parts = pathinfo("/www/htdocs/index.html");
echo $path_parts["dirname"] . "\n";
echo $path_parts["basename"] . "\n";
echo $path_parts["extension"] . "\n";
?>
天降大任于斯 2009-05-26
  • 打赏
  • 举报
回复
1,如果是单纯的记录表,每10天换一个表算了.如果不是,就考虑分表.每天1万条,一年才360万,如果做仔细的索引设计,最小空间的字段设计,根本就是小CASE
trench1022 2009-05-25
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 jayxujia123 的回复:]
不会啊 学习中
只知道第二个有个FLOCK的函数原来好象在哪里看过
至于第三个好象是正则的吧 呵呵
正则的不会啊 顺便问下 为什么有的正则就是匹配油箱的那个正则
ereg('^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$', $address)
这个中间那里--“\-”--是怎么回事啊?为什么要加这个啊?.....
高手回答下啊
[/Quote]

. 代表的是除了\n的任何字符, \.代表的是.这个字符
hdf_mf 2009-05-25
  • 打赏
  • 举报
回复
1.加服务器,拆表,加索引,建立memcached内存缓存
云轩2013 2009-05-25
  • 打赏
  • 举报
回复
学习一下。很牛。
digihero 2009-05-25
  • 打赏
  • 举报
回复
文件名不只是三位。
所以应该搜索最后一个.后面的内容。

函数我还真记不住。。。
ceopen 2009-05-25
  • 打赏
  • 举报
回复
大家要继续顶起来啊,多参与一下了!
coreyhsu2020 2009-05-17
  • 打赏
  • 举报
回复
不会啊 学习中
只知道第二个有个FLOCK的函数原来好象在哪里看过
至于第三个好象是正则的吧 呵呵
正则的不会啊 顺便问下 为什么有的正则就是匹配油箱的那个正则
ereg('^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$', $address)
这个中间那里--“\-”--是怎么回事啊?为什么要加这个啊?.....
高手回答下啊
dinghdong 2009-05-16
  • 打赏
  • 举报
回复
留个脚印。
zengdiwu 2009-05-15
  • 打赏
  • 举报
回复
第三个倒是不难,关键是第一、二个不知道怎么下手
加载更多回复(32)

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧