推荐序二
“当年加入淘宝的毕业生成了淘宝开发 DBA 的主管,他就是本书的作者” -> “当年加入淘宝的毕业生成了淘宝开发DBA的主管,而当年加入阿里巴巴B2B的毕业生,就是本书的作者”
序言
“APS 编写网站应用” -> “ASP 编写网站应用”
P90
“假设 id 为 100″ -> “假设 id 为 1″
“取出前20个” -> “取出第100至120个”
“通过调用存储引擎借口来获取” -> “通过调用存储引擎接口来获取”
P91
代码 6-4 的解决方案一中 “LIMIT” 之前增加 “ORDER BY gmt_create desc”, 也就是在 P91 的第2行和第3行之间插入1行:ORDER BY gmt_create DESC
P112
最后一行的 “quuery” -> “query”
P117
“尽两减少大的复杂 Query” -> “尽量减少大的复杂 Query”
P152
“不仅 user_group 表的访问从 ref 变成了 ALL” -> “不仅 group_message_content 表的访问从 ref 变成了 ALL”
P167
代码 8-31 替换成如下:
sky@localhost : example 03:12:45> EXPLAIN SELECT DISTINCT MAX(user_id)
-> FROM group_message
-> WHERE group_id > 1 AND group_id < 10
-> GROUP BY group_id\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: group_message
type: range
possible_keys: idx_gid_uid_gc
key: idx_gid_uid_gc
key_len: 4
ref: NULL
rows: 3563
Extra: Using where; Using index; Using temporary; Using filesort
1 row in set (0.00 sec)
在”最后再看一下这个和 GROUP BY 一起使用的带有聚合函数的示例,与上面第三个示例相比,可以看到已经多了 filesort 排序操作了,因为我们使用了 MAX 函数。”之后增加
“要取得分组后的 MAX 值,又无法使用索引完成操作,只能通过排序才行了。”
P178
“但是从 5.0.3 开始,VARCHAR 的最大存储限制已经更改为字节数限制了,扩展到可以存放 65535 bytes 的数据,不同的字符集可能存放的字符数并不一样。也就是说,在 MySQL 5.0.3 之前的版本,M 所代表的是字符数,而从5.0.3 版本开始,M 代表的是字节数了。” ->
“但是从 5.0.3 开始,VARCHAR 的最大存储限制已经改为字节数,而且不再有单个字段的限制,而是受单条记录除 TEXT 和 BLOB 类型字段外最大不超过 65536 Bytes 的限制。不过,字段定义中的 M 仍然表示字符数,所以定义后的 VARCHAR 类型字段实际最大可存放数据长度与字符集相关的。”
P199
“最多将缓存 32 个连接线程” -> “最多将缓存 64 个连接线程”
P200
“(127 – 12) / 127 * 100%” -> “(127 – 11) / 127 * 100%”
P202
“平台上可以超出 4BG 的限制” -> “平台上可以超出 4GB 的限制”
P207
“Key_buffer_UsageRatio = (1 – Key_blocks_used/(Key_blocks_used+Key_blocks_unused)) * 100%” ->
“Key_buffer_UsageRatio = (Key_blocks_used/(Key_blocks_used+Key_blocks_unused)) * 100%”
P286
“Lucene 具肖高效的全文索引和分词算法” -> “Lucene 具有高效的全文索引和分词算法”
Update: 2009.07.06
P119 没出现一次对应的事件则数量加1 -> 每出现一次对应的事件则数量加1
P120 然后根据分析结果着手指定优化计划 -> 然后根据分析结果着手制定优化计划
Update: 2009.07.07
P66 “使用工具” -> “实用工具”
Update: 2009.07.14
P8 “Eent Scheduler” -> “Event Scheduler”
p54 “限制耽搁用户” -> “限制单个用户”
P52 “mysql.table_priv” -> “mysql.tables_priv”
“mysql.column_priv” -> “mysql.columns_priv”
Update:2009.08.14
P191 L16 “Event 都被会被 IO 线程” -> “Event 都会被 IO 线程”
P243 L5 “修改的才式” -> “修改的形式”
Update:2009.09.03
Architecture, MySQL, MySQL书籍, performance
有网友建议将原书“附录A”中的示例库结构脚本在网上贴出来,方便大家做实验的时候不用一个字母一个字母的敲,挺好的建议,以下就是示例库结构脚本的所有创建语句:
--创建数据库
CREATE DATABASE example;
--创建表
--索引是根据应用中使用的 Query 的情况而决定,所有表开始都仅仅只有主键,没有其他的索引
--各表没有特定存储引擎和字符集,各位读者朋友可根据自己的环境决定
CREATE TABLE event (
id int(11) NOT NULL AUTO_INCREMENT,
gmt_create datetime NOT NULL,
user_id int(11) NOT NULL,
event_type varchar(8) NOT NULL,
event_msg varchar(255) DEFAULT NULL,
PRIMARY KEY (id)
);
--组内讨论信息summary
CREATE TABLE group_message (
id int(11) NOT NULL AUTO_INCREMENT,
gmt_create datetime NOT NULL,
gmt_modified datetime NOT NULL,
group_id int(11) NOT NULL,
user_id int(11) NOT NULL,
author varchar(32) NOT NULL,
subject varchar(128) NOT NULL,
PRIMARY KEY (id)
);
--组内讨论信息内容
CREATE TABLE group_message_content (
group_msg_id int(11) NOT NULL,
gmt_create datetime NOT NULL,
gmt_modified datetime NOT NULL,
content text NOT NULL,
PRIMARY KEY (group_msg_id)
);
--组信息
CREATE TABLE groups (
id int(11) NOT NULL AUTO_INCREMENT,
gmt_create datetime NOT NULL,
gmt_modified datetime NOT NULL,
name varchar(32) NOT NULL,
status varchar(16) NOT NULL,
description varchar(1024) DEFAULT NULL,
PRIMARY KEY (id)
);
--特殊消息
CREATE TABLE message (
id int(11) NOT NULL AUTO_INCREMENT,
gmt_create datetime NOT NULL,
gmt_modified datetime NOT NULL,
subject varchar(64) NOT NULL,
status varchar(16) NOT NULL,
PRIMARY KEY (id)
);
--消息
CREATE TABLE message_content (
msg_id int(11) NOT NULL,
gmt_create datetime NOT NULL,
gmt_modified datetime NOT NULL,
content varchar(512) DEFAULT NULL,
PRIMARY KEY (msg_id)
);
--照片表
CREATE TABLE photo (
id int(11) NOT NULL AUTO_INCREMENT,
gmt_create datetime NOT NULL,
gmt_modified datetime NOT NULL,
user_id int(11) NOT NULL,
status varchar(16) NOT NULL,
subject varchar(64) NOT NULL,
url varchar(64) NOT NULL,
PRIMARY KEY (id)
);
--相册表
CREATE TABLE photo_album (
id int(11) NOT NULL AUTO_INCREMENT,
gmt_create datetime NOT NULL,
gmt_modified datetime NOT NULL,
album_name varchar(64) NOT NULL,
user_id int(11) NOT NULL,
PRIMARY KEY (id)
);
--照片相册关系表
CREATE TABLE photo_album_relation (
id int(11) NOT NULL auto_increment,
gmt_create datetime NOT NULL,
gmt_modified datetime NOT NULL,
album_id int(11) NOT NULL,
photo_id int(11) NOT NULL,
PRIMARY KEY (id)
);
--照片回复信息表
CREATE TABLE photo_comment (
id int(11) NOT NULL AUTO_INCREMENT,
gmt_create datetime NOT NULL,
gmt_modified datetime NOT NULL,
photo_id int(11) NOT NULL,
comments varchar(512) NOT NULL,
PRIMARY KEY (id)
);
--系统各组广播消息表
CREATE TABLE top_message (
id int(11) NOT NULL AUTO_INCREMENT,
gmt_create datetime NOT NULL,
gmt_modified datetime NOT NULL,
user_id int(11) NOT NULL,
author varchar(32) NOT NULL,
subject varchar(128) NOT NULL,
PRIMARY KEY (id)
);
--用户基本信息表
CREATE TABLE user (
id int(11) NOT NULL AUTO_INCREMENT,
gmt_create datetime NOT NULL,
gmt_modified datetime NOT NULL,
nick_name varchar(32) NOT NULL,
password char(64) DEFAULT NULL,
email_b varchar(32) DEFAULT NULL,
status varchar(16) DEFAULT NULL,
PRIMARY KEY (id)
);
--用户个人详细信息表
CREATE TABLE user_profile (
user_id int(11) NOT NULL,
gmt_create datetime NOT NULL,
gmt_modified datetime NOT NULL,
sexuality char(1) NOT NULL,
msn varchar(32) DEFAULT NULL,
sign varchar(64) DEFAULT NULL,
birthday date DEFAULT NULL,
hobby varchar(64) DEFAULT NULL,
location varchar(64) DEFAULT NULL,
description varchar(1024) DEFAULT NULL,
PRIMARY KEY (user_id)
);
--用户分组表
CREATE TABLE user_group (
user_id int(11) NOT NULL,
gmt_create datetime NOT NULL,
gmt_modified datetime NOT NULL,
group_id int(11) NOT NULL,
user_type int(11) NOT NULL,
status varchar(16) NOT NULL,
PRIMARY KEY (user_id,group_id)
);
Architecture, book service, example db, MySQL, MySQL书籍, performance, script
今天,公元2009年06月11日,本人第一本独立完成的原创技术书籍《MySQL性能调优与架构设计》开始在China-Pub 上正式首发了,卓越购买地址:《MySQL性能调优与架构设计》。
很多朋友问我写书的感觉是怎样的,说实话,只需要一个字就可以形容:“累”。从开始写这本书到现在,已经将近一年没有看过电视,每天下班后就开始写,每天晚上都要到12点之后,周六周日都是如此。从那时候开始,我就再也没有看过电视了。
当然,写完之后,还是有较大的成就感的。不管最后各位读者朋友的评价如何,都是倾注了自己这段时间来所有的心血。而且在整个过程中,对自己的知识技能也有很大的提高,包括知识体系的整合,细节的进一步理解。
第一次写书,没有任何经验,又是一个人独自完成,由于实在太辛苦,中途甚至有一次差点决定放弃,幸好自己毅力还算坚定,最后总算坚持下来了。现在回头想想,不禁有点佩服自己的毅力。
一个人的能力毕竟有限,书中肯定会存在不少问题,还请读者朋友们能够指出,万分感谢!
Architecture, MySQL, MySQL书籍, performance
即使Oracle收购SUN,将MySQL这只小海豚归于麾下,也未必是件很糟糕的事情,MySQL和Oracle面对的客户群体不同,一个偏重中低端、互联网数据库市场,一个偏重高端、大型企业级数据库市场,有太多的理由相信这一收购不会是MySQL的终点,相反MySQL将会是Oracle产品线的良好补充,也许不久即成为埃里森手中的另一张王牌。
目前MySQL装机量接近1200万,占有全球数据库25%市场份额,互联网公司80%的市场份额,特别近几年的Web 2.0兴起,更是引爆了MySQL的应用。但这些MySQL数据库大部分由开发工程师或系统工程师兼职维护着,国内专职MySQL DBA屈指可数,更别说是MySQL DBA团队。随着MySQL应用的逐步成熟,国内一些重量级互联网公司早已看到其潜力并进行大规模使用,更有一些公司磨刀霍霍却苦于该领域技术人才难求,百度、淘宝等知名的互联网公司都有大半年招不到一名合适MySQL DBA的经历。而系统介绍MySQL的中文书籍非常之少,值得一读的MySQL中文书籍更是少之又少。现在MySQL技术领域确实需要一批从理论与实践中锤炼出来的著作来造就更多更优秀的MySQL技术大师。
从作者撰写此书开始,我就一直关注着,时而与其深夜相遇于MSN,呼之,答曰:写书ing。白天在工作中实践,夜里在灯光下沉淀。当时我就迫不急待地想提前一睹,现有幸如愿,阅后颇有感慨,字里行间可见作者对MySQL理解之深!特别是优化篇的“Query优化”(第8章)和架构篇的“数据切分”(第14章)节,“Query优化”章节结合作者多年的DBA实战经验总结了Query优化的十大原则和优化思路,阐述MySQL Query Optimizer的工作机制,并通过Explain和Profiling进行实例解析,清晰易懂,见解独到。“数据切分”章节提供了垂直切分和水平切分等多种数据量膨胀解决方案,并深入分析了不同方案的优缺点,为提升数据库集群的扩展性,解决数据库瓶颈提供了极有价值的借鉴参考。
相信此书会成为你通往MySQL技术大牛道路上的正确选择。
吴诗展
百度 高级MySQL DBA
http://dbaview.cn
于2009年4月
注:此推荐序版权归 吴诗展 所有
Architecture, MySQL, MySQL书籍, performance
1995年5月23日,这是一个普通的日子,但对MySQL来说,这是初生的时刻;自此,这个世界上多了一个数据库系统,这就是一开始被人们嘲笑为“玩具”数据库的MySQL。我是在2000年开始接触Linux和MySQL的,那时候国内网络仍然很不发达,想要找到MySQL的学习资料太不容易了,唯一可用的就是MySQL手册,而且还是英文的。就这样懵懵懂懂直到工作,这种情况仍未得到太大改善。这时候,我就在想,有朝一日我也要学习开源社区的精神,为开源社区做出一定的努力。此后,我利用业余时间翻译了不少MySQL的英文手册,以及不少优秀的技术材料,期间也有出版社联系我商谈出书事宜,虽未出过书,但深知写书的艰辛,因此也没敢答应下来,至今仍为一大遗憾。
2008年2月26日,Sun收购了MySQL,可爱的小海豚差点就此走上了封闭的道路,幸好有开源社区各知名人士的奔走,才使得它仍然活跃在开源社区里,这让我们对MySQL的未来充满了信心。2009年4月20日,Oracle收购Sun后,我们却已不再担心MySQL的未来,因为我们坚信有开源社区的努力,即使Oracle想要扼杀它,也不会得逞的。
随着互联网的发展,电子商务、Web 2.0等的崛起,一大批以LAMP技术为依托的企业如雨后春笋,这也大大刺激了MySQL DBA这个职位的需求。从前大家都把MySQL不当回事,认为普通的PHP程序员或系统管理员就可以搞定,但随着数据量和访问量的双重暴增,术业有专攻这句老话得到验证了,没有专业的MySQL DBA,想要再把LAMP架构做好是不可能的事。本书的出现为我们提供了一个机会,它可以帮助初级MySQL DBA迅速成长起来,让我们在面对负载日渐严重的数据库服务器时不至于心慌气短,手忙脚乱。
本书由阿里巴巴的高级DBA简朝阳先生呕心沥血编著而成,我想它应该是目前国内最好的MySQL技术书籍了。它适用读者范围广,是初级DBA到LAMP架构设计师手头必不可少之利器。本书由易到难,不仅阐述了基础知识,同时深入剖析了MySQL的内部工作机制及其原理,最后针对LAMP架构中的各种常用技术做了详细分析。想成为优秀DBA或LAMP的话,它会是你的良师益友,我们强力推荐此书。
叶金荣(http://imysql.cn)
搜狐公司高级DBA
MySQL 专家组(http://mysqlmeg.cn)
注:此推荐序版权归 叶金荣(yejr) 所有
Architecture, MySQL, MySQL书籍, performance