免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: lzhome
打印 上一主题 下一主题

关于php引用mysql建立高速内存表的感想 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-12-13 17:52 |只看该作者
回james.liu (J.L) 大人:)


,,应该指服务器端分布把。。。
======================
不是分布(distribut),就是 socket ,分布式还真没搞过,没有发言权:)


服务器端分布有一定好处,硬件资源,网络,软件资源的合理利用。
======================
分散服务器就要有数据同步和数据共享的问题,C 可以 Socket 来多机进程的 IPC,PHP 这方面就弱些,实际上单机 PHP 的 IPC 都……不是说没有信号量(Semaphore) 和共享内存(shm) ,而是实在不大好搞,而且安全性也没有保障。其实这些都可以克服,关键的是 PHP 优则 C/JAVA   :(

就我们而言,搞双机,无论是 dual-web 还是 MySQL 的 Master-slave 都是容错的一种措施,而不是性能的分担:)



你说得慢,,我不知道你怎么计算的。 当内存占用和cpu占用达到一定比例,读盘速度不快的。这点我深有感触。
===========================
这个不用算……
shell$ time dd bs=1M count=1024 if=/dev/zero of=/tmp/test
1024+0 records in
1024+0 records out

real    0m12.429s
user    0m0.000s
sys     0m5.020s

你用 12.429 秒下一个 1G 的文件我就说网络快:)不过我在我们的机器里实在不到‘内存占用和cpu占用达到一定比例’的机器,这点非常遗憾……



"两台普通机器运行的服务肯定比一台稍微好点的机器快,稳定",,大概这么个意思
=============================
稳定一些,速度取决于算法


这话不是我说得,,,是livejo什么的网站总结的。。。
=====================================
我说的都是我的经验,亲眼看见的:)

[ 本帖最后由 wsswan 于 2006-12-13 17:57 编辑 ]

论坛徽章:
0
12 [报告]
发表于 2006-12-13 19:37 |只看该作者
[quote]原帖由 wsswan 于 2006-12-13 17:52 发表
回james.liu (J.L) 大人:)

jl:客气,,叫我jl就可以了..大家讨论.


,,应该指服务器端分布把。。。
======================
不是分布(distribut),就是 socket ,分布式还真没搞过,没有发言权:)


服务器端分布有一定好处,硬件资源,网络,软件资源的合理利用。
======================
分散服务器就要有数据同步和数据共享的问题,C 可以 Socket 来多机进程的 IPC,PHP 这方面就弱些,实际上单机 PHP 的 IPC 都……不是说没有信号量(Semaphore) 和共享内存(shm) ,而是实在不大好搞,而且安全性也没有保障。其实这些都可以克服,关键的是 PHP 优则 C/JAVA   :(

就我们而言,搞双机,无论是 dual-web 还是 MySQL 的 Master-slave 都是容错的一种措施,而不是性能的分担:)

jl:  我个人觉得php适合描述.  所以用到其他服务就用其他语言写了.  


你说得慢,,我不知道你怎么计算的。 当内存占用和cpu占用达到一定比例,读盘速度不快的。这点我深有感触。
===========================
这个不用算……
shell$ time dd bs=1M count=1024 if=/dev/zero of=/tmp/test
1024+0 records in
1024+0 records out

real    0m12.429s
user    0m0.000s
sys     0m5.020s

你用 12.429 秒下一个 1G 的文件我就说网络快:)不过我在我们的机器里实在不到‘内存占用和cpu占用达到一定比例’的机器,这点非常遗憾……

jl:   呵呵...你这个比较和我说得不一样.

我说的是LiveJournal   有篇中文介绍: http://www.example.net.cn/2006/0 ... e_step_by_step.html

论坛徽章:
0
13 [报告]
发表于 2006-12-13 19:39 |只看该作者
原帖由 wsswan 于 2006-12-13 17:06 发表


PHP 如果支持 thread 那 Java 真就一边凉快去了,


汗....java一边凉快还需要很长时间.

不过你说jsp的话,,,我还有点同意...

论坛徽章:
0
14 [报告]
发表于 2006-12-13 22:32 |只看该作者
jl:  我个人觉得php适合描述.  所以用到其他服务就用其他语言写了.  
========
其实吧,PHP4 以后加入了 Zend 引擎,整个 PHP 文件只编译一次,然后就变成 binary 来运行了.PHP3 的时候是编译一行执行一行.例如 for(i=0;i<10;i++) 这句,PHP4 会一次全部编译完,然后执行,而 PHP3 要编译 10 遍.......

也就是说,PHP4 在执行 while(1){} 这句的时候,效率和 C 执行 while(1){} 这句的时候是一样的.当然我说的是理论啊,没有让 Zend optimizer 这种内存边界都漏的 compiler 和 GCC 比的意思

至于其他的就是基础功的问题了,比如执行 system('/bin/df -P -m'); 接收的是一个字符串,而 popen("/bin/df -P -m";打开的是一个匿名管道, proc_open() 则是打开一个双向匿名管道,管道比字符串强的一点是他会阻塞,而且也不容易溢出.当然你还可以手工 mkfifo 来建立一个有名管道,这样应用就更广泛了,不过 fifo 和 pipe 还是稍微有那么一点点区别的......J.L 别嫌我罗嗦啊,哈哈


LiveJournal 那篇文章我以前看过,不过不知道是谁写的,感觉有点生搬硬套.我们单位就是看了这篇文章才让兄弟搞的 MySQL 的 Master-Slave 的,所以再看这篇文章,这 Master-Master 感觉就有点...无非就是 insert 俩么 -_-!

说白了 Squid + LVS 就够支撑 HTML 流,PHP + Dual-MySQL + Cache 就够支撑程序的.LiveJournal 的那篇文章也就是这个意思

论坛徽章:
0
15 [报告]
发表于 2006-12-13 23:13 |只看该作者
那是lj的老大在mysql大会上的发言稿,当然要夸用mysql的好处拉。不过也暴露出来——如果insert够快,用得着那么费事嘛

论坛徽章:
0
16 [报告]
发表于 2006-12-13 23:40 |只看该作者
索引越多 Insert 越慢,但是 Select 越快.而且 Insert 会 Locking Table.例如一台机器 A 一秒钟可以同时处理 Insert 100 条和 Select 50 条语句,而且 Select 一条等于 Insert 两条的话,那么将所有 Select 操作甩到 B 上面,则 A 机器就可以一秒钟插入 200 条语句,这样效率就很会高.而且可以在 B 机器上多建索引,这样 Insert 和 Select 就都快了.A 就是 Master,B 就是 Slave.

MySQL 手册是这么介绍 Replication 的

但是,Insert/Update 肯定会锁表的,所以说实际上性能没吹的那么玄乎,哈哈.

另外补充一点的是 Squid 是从内存->NetworkIntrface,所以看起来快一些.对于图片还管用(实际上也就对图片才管用),可要是 CU 也 Squid .....回个帖好几天才能看见,那谁也不来了...

论坛徽章:
0
17 [报告]
发表于 2006-12-14 00:48 |只看该作者
选择语言我不单从效率来看,,,从稳定,开发效率,维护这些来考虑。。效率相对而言其次了

好像是翻译的,,,不是写的。

我提它是因为关于你说的双机

论坛徽章:
0
18 [报告]
发表于 2006-12-14 09:30 |只看该作者
如何在最开始建内存表,是开机写一个脚本么?

论坛徽章:
0
19 [报告]
发表于 2006-12-14 09:49 |只看该作者
[quote]原帖由 james.liu 于 2006-12-14 00:48 发表
选择语言我不单从效率来看,,,从稳定,开发效率,维护这些来考虑。。效率相对而言其次了
=========
同意:)肯定是等代码稳定以后才开始考虑效率问题。至于维护和开发效率,这些东西,呵呵……

我提它是因为关于你说的双机
==========
我一开始说的是网络延迟要比硬盘慢。我想,出了这么大的差距,可能是我们理解的角度不一样吧。你是从 Squid 和 LVS 的角度来理考虑这些的,我是从 TCP 协议,TTL 时间,硬盘平均寻址时间和 I/O 来看这个问题的:wink:

[ 本帖最后由 wsswan 于 2006-12-14 09:52 编辑 ]

论坛徽章:
0
20 [报告]
发表于 2006-12-14 09:56 |只看该作者
原帖由 gydoesit 于 2006-12-14 09:30 发表
如何在最开始建内存表,是开机写一个脚本么?

只要在 create table 的时候, type=memory 就可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP