4月 272011
 

10.6 选择一种表类型

用MySQL,当前(版本 3.23.5)你能从一个速度观点在4可用表的格式之间选择。

静态MyISAM

这种格式是最简单且最安全的格式,它也是在磁盘格式最快的。速度来自于数据能在磁盘上被找的难易方式。当所定有一个索引和静态格式的东西时,它很简单,只是行长度乘以行数量。而且在扫描一张表时,用每次磁盘读取来读入常数个记录是很容易的。安全性来自于如果当写入一个静态MyISAM文件时,你的计算机崩溃,myisamchk能很容易指出每行在哪儿开始和结束,因此它通常能回收所有记录,除了部分被写入的那个。注意,在MySQL中,所有索引总能被重建。

动态MyISAM

这种格式有点复杂,因为每一行必须有一个头说明它有多长。当一个记录在更改时变长时,它也可以在多于一个位置上结束。你能使用OPTIMIZE table或myisamchk整理一张表。如果你在同一个表中有象某些VARCHAR或BLOB列那样存取/改变的静态数据,将动态列移入另外一个表以避免碎片可能是一个好主意。

压缩MyISAM

这是一个只读类型,用可选的myisampack工具生成。 Continue reading »

4月 272011
 

10.3 使你的数据尽可能小

最基本的优化之一是使你的数据(和索引)在磁盘上(并且在内存中)占据的空间尽可能小。这能给出巨大的改进,因为磁盘读入较快并且通常也用较少的主存储器。如果在更小的列上做索引,索引也占据较少的资源。

你能用下面的技术使表的性能更好并且使存储空间最小:

尽可能地使用最有效(最小)的类型。MySQL有很多节省磁盘空间和内存的专业化类型。

如果可能使表更小,使用较小的整数类型。例如,MEDIUMINT经常比INT好一些。

如果可能,声明列为NOT NULL。它使任何事情更快而且你为每列节省一位。注意如果在你的应用序中你确实需要NULL,你应该毫无疑问使用它,只是避免缺省地在所有列上有它。

如果你没有任何变长列(VARCHAR、TEXT或BLOB列),使用固定尺寸的记录格式。这比较快但是不幸地可能会浪费一些空间。见10.6 选择一种表类型。

每张桌子应该有尽可能短的主索引。这使一行的辨认容易而有效。

对每个表,你必须决定使用哪种存储/索引方法。见9.4 MySQL表类型。也可参见10.6 选择一种表类型。

只创建你确实需要的索引。索引对检索有好处但是当你需要快速存储东西时就变得糟糕。如果你主要通过搜索列的组合来存取一个表,以它们做一个索引。第一个索引部分应该是最常用的列。如果

你总是使用许多列,你应该首先以更多的副本使用列以获得更好的列索引压缩。

如果很可能一个索引在头几个字符上有唯一的前缀,仅仅索引该前缀比较好。MySQL支持在一个字符列的一部分上的索引。更短的索引更快,不仅因为他们占较少的磁盘空间而且因为他们将在索引缓存中给你更多的命中率并且因此有更少磁盘寻道。见10.2.3 调节服务器参数。 Continue reading »

4月 272011
 

10.2.3 调节服务器参数
你能用这个命令得到mysqld服务器缺省缓冲区大小:

shell>; mysqld –help

这个命令生成一张所有mysqld选项和可配置变量的表。输出包括缺省值并且看上去象这样一些东西:

Possible variables for option –set-variable (-O) are:
back_log              current value: 5
connect_timeout       current value: 5
delayed_insert_timeout  current value: 300
delayed_insert_limit  current value: 100
delayed_queue_size    current value: 1000
flush_time            current value: 0
interactive_timeout   current value: 28800
join_buffer_size      current value: 131072
key_buffer_size       current value: 1048540
lower_case_table_names  current value: 0
long_query_time       current value: 10 Continue reading »

4月 272011
 

MySQL中文参考手册
——————————————————————————–

10 从MySQL得到最大的性能

优化是一项复杂的任务,因为它最终需要对整个系统的理解。当用你的系统/应用的小知识做一些局部优化是可能的时候,你越想让你的系统更优化,你必须知道它也越多。

因此,本章将试图解释并给出优化MySQL的不同方法的一些例子。但是记住总是有某些(逐渐变难)是系统更快的方法留着去做。

10.1 优化概述
为了使一个系统更快的最重要部分当然是基本设计。你也需要知道你的系统将做这样的事情,那就是你的瓶颈。

最常见的瓶颈是:

磁盘寻道。磁盘花时间找到一个数据,用在1999年的现代磁盘其平均时间通常小于10ms,因此理论上我们能大约一秒寻道 1000 次。这个时间用新磁盘提高很慢并且很难对一个表优化。优化它的方法是将数据散布在多个磁盘上。

当磁盘在我们需要读数据的正确位置时,磁盘读/写。用1999年的现代,一个磁盘传输类似10-20Mb/s。这必寻道更容易优化,因为你能从多个磁盘并行地读。

CPU周期。当我们读数据进内存时,(或如果它已经在那里)我们需要处理它以达到我们的结果。当我们有相对内存较小的表时,这是最常见的限制因素,但是用小表速度通常不是问题。

内存带宽。当CPU需要超出适合cpu缓存的数据时,缓存带宽就成为内存的一个瓶颈。这是对大多数系统的一个不常见的瓶颈但是你应该知道它。 Continue reading »

5月 142009
 

SNS网站在国内突然火了,不过这把火也大有消散意味。曾经对其很热衷的网友都慢慢失去了兴趣。面对用户群体的疲软表现,许多网站都希望通过游戏、资源分享等方式以提升用户的积极性和忠诚度。

国内SNS网站用户黏度低

相比国外网民对MySpace、facebook等网站的狂热程度,国内的SNS网络目前都存在着同样的问题,随着时间的推移,用户黏度逐渐下降。

有互联网分析家表示,国内SNS网站只是对国外同类网站简单复制。国外的SNS在功能上体现了“社交”这一含义,facebook不仅能通过朋友认识朋友,还能与朋友进行在线的即时交流。而国内的SNS网站“社交”功能并不强大。

一SNS网站的玩家表示,“如果没啥特殊企图的话,其实随便挑一家SNS网站玩就可以了,反正每家的设置都差不多,好玩的项目无非就那几个。”事实上,这就是中国SNS网站的现状。

有网友说道,写日记可以上博客、玩游戏可以玩网游、跟朋友聊天可以用QQ、msn,所以似乎没必要再加入一个SNS网站。

用新鲜游戏延长停留时间

虽然国内部分SNS网站的游戏备受质疑,但它成为众多这些网站挽留用户和延长用户停留时间的法宝之一。国外最大的SNS网站相关负责人也公开表示,会提升游戏在网站上的比重。“游戏能拉近现代社会人与人之间的关系”,心理学界人士告诉记者,“也许你和他之间在现实中没有太多语言交流,但通过游戏可以加强两者之间的感情,而且在游戏中,你不用担心冷场或是不投机等尴尬局面”。

去年年底国内一大型SNS网站已宣称向网络游戏商业化转型,希望通过大型网游吸引要求越来越高的网络用户。

网友小水滴表示,现在的“种菜”比以往的“奴隶买卖”和“争车位”更有趣和复杂,种植的作物不断更新,玩家的级数越高开发的土地越多。

“除了不断开发新游戏外,游戏的耐耗性也是十分重要的”,曾有网页游戏开发者表示,SNS里许多组件其实就是去年流行的网页游戏,但游戏设计都太过简单,产品生命周期过短,一旦用户兴趣消失,这个组件就会形同废品。很显然,只有更多、更有趣的娱乐组件才能黏住用户。但用户欲望是无止境的,而且是多变的,谁也不能保证新开发的组件能得到用户欢迎 Continue reading »