<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>老布丁的Central Perk</title>
	<atom:link href="http://heysql.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://heysql.com</link>
	<description>MySQL\Linux\Twitter控,自学途中</description>
	<lastBuildDate>Wed, 15 Sep 2010 16:51:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>支付宝2011校园招聘，期待你的加入</title>
		<link>http://heysql.com/other/xiaozhao/</link>
		<comments>http://heysql.com/other/xiaozhao/#comments</comments>
		<pubDate>Wed, 15 Sep 2010 16:46:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[琐碎的其他]]></category>

		<guid isPermaLink="false">http://www.heysql.com/wordpress/?p=156</guid>
		<description><![CDATA[如果你感兴趣可以把简历投给我，我会帮你内部推荐，简历发送邮箱：heysql.com@gmail.com
信息比较长，如果你感兴趣那就耐心看岗位要求把，期待你的简历
招聘部门及岗位：  
技术部：
JAVA开发工程师、测试工程师、C/C++开发工程师、数据开发工程师（ETL开发）、Linux系统工程师、
Linux研发工程师、运维开发工程师、开发DBA、WEB安全工程师、系统安全工程师、系统管理工程师、
大规模集群应用管理工程师、技术支持工程师、工具开发工程师、内网开发工程师、大规模网站监控工程师、
数据挖掘工程师、前端开发工程师 
无线支付：无线产品经理、手机开发工程师（C++）、J2EE开发工程师、测试工程师
商户事业部：培训专员、数据分析师—数据挖掘方向、技术支持、商户支持专员
用户事业部：运营专员
下面是具体的岗位要求：
技术部：
JAVA开发工程师
工作地点：杭州/上海
招聘人数：267人
职位描述:
1.进行软件详细设计和编码实现；满足功能；确保性能.质量和安全；
2.维护和升级现有软件产品；快速定位并修复现有软件缺陷。
任职要求：
1.专业不限；计算机.软件工程.数学等相关专业优先考虑；
2.掌握Web编程；有使用Java语言进行Web开发的经验；了解Spring 等开源框架优先；
3.熟悉Linux/Unix开发环境.常用设计模式.基于数据库的设计和开发；
4.有系统分析和设计的项目经验者优先考虑；
5.有良好的软件工程知识和质量意识；
6.良好的学习沟通能力；团队合作意识及抗压能力。  
测试工程师
工作地点：杭州
招聘人数:68人
职位描述：
1.进行业务需求分析和系统设计分析；设计测试计划和测试方案；
2.根据用例对系统进行测试；发现；报告和跟踪缺陷；
3.应用自动化测试方式设计和编写自动化测试脚本或自主开发测试工具；
任职要求：
1.计算机.软件工程相关专业大学本科学历及以上；
2.具备良好的程序编写基础思想与技能；有C或C++或C#或Java的实际应用经验；有B/S系统编程经验优先；
3.熟悉SQL基本语法；了解SQL Server或Oracle数据库的基本应用及数据库设计基础；
4.熟悉软件工程与软件测试基本流程与理念；有志于从事软件测试工作。有软件测试工作实践经验者优先；
5.良好的团队合作精神；良好的沟通技巧；解决问题及抗压能力强。  
C/C++开发工程师
工作地点：杭州
招聘人数：5人
职位描述：
1．进行软件详细设计和编码实现；满足功能；确保性能.质量和安全；
2．维护和升级现有软件产品；快速定位并修复现有软件缺陷。
任职要求：
1．本科及以上学历；计算机相关专业；
2.熟练掌握C/C++语言.数据结构及算法；
3.熟悉Linux的常用命令.操作和脚本语言；
5.具有优秀的分析.解决实际问题的能力；
6.良好的沟通能力.有责任心和团队合作意识。  
数据开发工程师（ETL开发）
工作地点：杭州
招聘人数：6人
职位描述：
1．支付宝数据仓库部门主要职责是决策支持；通过收集.分析.挖掘公司内所有数据(包含日志.数据库.文件.外部信息等)；
2．为高层提供决策.战略数据支持；我们在数据库技术.分布式计算.数据挖掘.算法研究等方面拥有业内领先的实力。
任职要求：
1．本科及以上学历；计算机及相关专业毕业；
2．具有很强的逻辑思维和推理能力；
3．优秀的沟通和学习能力 ；有算法和数据挖掘背景者优先；
4．熟悉SQL SERVER/ORACLE/DB2/MY SQL/ GREENPLUM等数据库中一种；有SQL开发经验者优先；
5．对海量数据计算技术有强烈的兴趣；喜欢创新；挑战难题；有分布式计算平台（Hadoop,Hive更佳）经验者优先。  
Linux系统工程师
工作地点：北京/杭州
招聘人数： 10人
职位描述：
1．负责Linux内核等基础系统服务组件实现算法和源码的研究分析；
2．针对支付宝的业务需求优化算法代码；增加新功能；使应用取得更佳的资源利用率；
任职要求：
1．熟悉Linux平台下的C/C++语言编程；对数据结构和算法设计有较深刻的理解；
2．熟悉Linux（类UNIX）内核；阅读过内核中的主要模块(文件系统；TCP/IP, I/O；内存管理)源代码者优先；
3．熟悉各种计算机体系结构(包括X86_64,MIPS等）；
4．具备很强的分析和解决问题的能力；对于攻关疑难问题具有强烈的兴趣；
5．对技术敏感而细致；乐于发现；分析和解决复杂问题；
6．善于学习新的知识；具有开拓创新精神；
7．很强的责任心；勤于动手；不怕繁琐；重视流程规范。  
Linux研发工程师
工作地点：北京/杭州
招聘人数：5人
职位描述：
1．负责各类基础服务平台研究.开发和优化；
2．支付宝网站运行容量优化和稳定性技术研究和开发；
3．针对业务需求；开发完善各业务基础平台；为各业务提供更好的底层平台支持。
任职要求：
1．计算机软件.数学等相关专业大学本科学历及以上；Linux社区成员优先；
2．对在线支付.Linux开源软件等有浓厚的兴趣和钻研能力；
3．具有出色的计算机算法和数据结构构建能力和实现能力；
4．对技术敏感而细致；乐于发现；分析和解决复杂问题；
5．具有良好的使命驱动感；具备良好的团队合作精神和沟通能力。 
运维开发工程师
工作地点：杭州/上海
招聘人数：5人
职位描述：
1．设计.开发自动化管理工具或系统；提升系统容量性能和稳定性；
2．密切配合网站产品的设计.研发和部署；提升网站健壮性和运维性；
3．对分布式应用和网站的稳定性.可用性.健壮性负责；
4．研究制定运维策略.预案和相关解决方案；提升运维规范性。
任职要求：
1．对在线支付.Linux.WEB技术（Apache；MySQL；Tomcat）.脚本编程.JAVA开发等有浓厚的兴趣；
2．熟悉TCP/IP.HTTP等协议；掌握PHP.Perl.Shell.JAVA等语言的一种；有Linux/Unix维护或开发经验优先；
3．优秀的沟通能力；出色的学习与钻研能力；良好的问题分析与解决能力；
4．具有良好的自我驱动能力和执行能力；以及获得结果的能力。  
开发DBA
工作地点：杭州/上海
招聘人数： 5人
职位描述：
1．参与开发项目建设；根据业务逻辑进行数据库方面设计和优化；
2．审核程序中SQL语句和逻辑；进行性能优化；
3．处理线上数据库的变更；确保项目发布；跟踪项目上线情况；发现并解问题；
4．管理开发；测试环境的数据库。
任职要求：
1．本科以上学历；对计算机技术有浓厚的兴趣；
2．对程序语言；数据结构或数据分析（数据统计）有较好的了解；
3．熟悉Oracle或MySQL数据库；有以上两种数据库学习或实践经历；
4．熟悉和灵活运用两种以上的脚本语言；包括但不限于：Shell.Perl；熟悉Java程序编写者优先；
5．具备很强的分析和解决问题的能力；对于攻关疑难问题具有强烈的兴趣；
6．具有良好的使命驱动感；具备良好的团队合作精神和沟通能力。  
WEB安全工程师
工作地点：杭州/上海
招聘人数：5人
职位描述：
1．负责WEB应用的安全测试和安全管理；
2．参与应用系统安全开发流程；执行应用系统安全代码审核；
3．合作开发完成安全产品。
任职要求：
1．了解信息系统安全攻防技术；有安全工具开发经验.安全技术大赛经验者优先；
2．具有独立分析研究信息安全漏洞的能力；并制定完善的修补方案；
3．熟悉Windows或Linux/Unix操作系统结构；有内核开发经验者优先；
4．对TCP/IP协议和网络工程技术有深入了解；掌握网络编程技术；
5．精通主流UNIX平台系统管理和网络管理；精通Perl；Shell编程；
6．了解跨站脚本攻击.SQL注射等Web安全攻防原理；理解多种Web应用技术（Java.PHP.JSP）；并熟悉相关的安全问题；
7．有独立判断问题能力；有较强的分析问题及提出解决建议方案的能力；
8．具有良好的使命驱动感；具备良好的团队合作精神和沟通能力。  
系统安全工程师
工作地点：杭州/上海
招聘人数：5人
职位描述：
1．参与系统网络的漏洞分析；以及漏洞修补方案的制定；
2．参与系统漏洞修补；应急响应信息系统安全事件；
3．规范系统网络安全运维。
任职要求：
1．了解信息系统安全攻防技术；有安全工具开发经验.安全技术大赛经验者优先；
2．具有独立分析研究信息安全漏洞的能力；并制定完善的修补方案；
3．熟悉Windows或Linux/Unix操作系统结构；有内核开发经验者优先；
4．对TCP/IP协议和网络工程技术有深入了解；掌握网络编程技术；
5．精通主流Unix平台系统管理和网络管理；精通Perl；Shell编程;
6．有独立判断问题能力；有较强的分析问题及提出解决建议方案的能力；
7．具有良好的使命驱动感；具备良好的团队合作精神和沟通能力。  
系统管理工程师
工作地点：北京/杭州
招聘人数： 5人
职位描述：
1．负责Linux和Unix系统的运营.维护.优化等工作；
2．负责存储.基础服务等方面的技术支持工作；
3．负责安全或网络相关的辅助技术支持工作。
任职要求：
1．理工科专业大学本科学历及以上；Linux社区成员优先；
2．熟悉Linux.Unix等操作系统的管理.维护.开发和使用；
3．熟悉和灵活运用两种以上的脚本语言；包括但不限于：Shell.Perl等；
4．熟悉TCP/IP协议.了解常用的网络服务和WEB服务器配置；
5．了解WEB应用相关工具并拥有实际经验者优先；
6．具备良好的团队合作精神和沟通能力，拥有优秀的解决问题能力；
7．有较好专业基础者，可降低学历要求。  
大规模集群应用管理工程师
工作地点：杭州/上海
招聘人数：10人
职位描述：
1．大规模互联网集群应用的部署规划.实施.维护和优化；
2．参与支付宝网站应用产品的设计和研发；提升系统性能和稳定性；
3．解决线上涉及网站应用.网络.操作系统及相关软件程序的各种问题；
4．研发和测试环境建设.维护和支持；解决测试环境的各种问题；提升测试环境效率。
任职要求：
1．对在线支付.Linux.WEB技术（Apache；MySQL；Tomcat）.脚本编程.JAVA开发等有浓厚的兴趣；
2．熟悉TCP/IP.HTTP等协议；掌握PHP.Perl.Shell.JAVA等语言的一种；熟悉Linux/Unix维护或开发者优先；
3．优秀的沟通能力；出色的学习与钻研能力；良好的问题分析与解决能力；
4．具有良好的自我驱动能力和执行能力；以及获得结果的能力。  
技术支持工程师
工作地点：杭州/上海
招聘人数：5人
职位描述：
1．负责网站系统故障和问题的诊断.分析和解决；协调重大故障处理.分析；推进改善措施落实；
2．针对故障以及网站维护等重大事件进行业务影响分析；并进行影响预警或通告；
3．设计.开发技术支持流程和工具；提升技术支持服务水平和品质。
任职要求：
1．对互联网网站应用.计算机技术和解决问题具有浓厚的兴趣；
2．熟悉Java开发语言或脚本编程语言；了解Linux和TCP/IP网络技术；
3．具有良好的系统化思维.问题分析与解决能力；具有良好Troubleshooting技能；
4．优秀的沟通和协调能力；具有很好的客户服务意识；
5．具有良好的学习能力.自我驱动能力和执行能力，以及获得结果的能力。  
工具开发工程师
工作地点：杭州
招聘人数：5人
职位描述：
1．负责研发.运维工具和流程平台的开发和维护；提高研发.运行工作效率；
2．负责公司部分工作工具和流程平台开发和支持；提高办公效率。
任职要求：
1．对研发流程和工具.运行服务流程和平台具有浓厚的兴趣；
2．对Java和PHP等开发语言具有优秀的钻研能力和应用能力；
3．熟悉Linux/Unix开发环境.常用设计模式.基于数据库的设计和开发；
4．具有良好的软件工程和质量意识和能力；
5．优秀的沟通和协调能力；具有很好的客户服务意识；
6．具有良好的学习能力.自我驱动能力和执行能力；以及获得结果的能力。  
内网开发工程师
工作地点：杭州
招聘人数：2人
职位描述：
1．公司内部网站和工作流程开发和维护；
2．公司办公信息系统开发和维护。
任职要求：
1．计算机相关专业毕业；
2．对办公信息化建设.Java或PHP等开发语言有较好的基础和浓厚的兴趣；
3．具有良好的快速学习能力和沟通能力；具有很好的客户服务意识。  
大规模网站监控工程师
工作地点：杭州
招聘人数：3人
职位描述：
1．支付宝网站业务和底层系统的运行健康状态监控；及时发现问题并有效协助处理；
2．支付宝网站运行事件记录.跟踪.总结；并出具准确的运行或故障报告；
3．对网站运行进行统计.分析；发现潜在的问题或趋势；并推动解决；
4．负责监控系统日常运行维护；完善运行监控体系。
任职要求：
1．计算机或电子商务相关专业；
2．对Linux操作系统；TCP/IP；Apache.Jboss等WEB应用具有浓厚的兴趣或钻研精神；
3．具有良好的系统化思维.问题分析与解决能力；具有良好Troubleshooting技能；
4．具有超强的学习能力和良好的自我驱动能力；
5．具有良好的职业素养；工作认真.负责；团队合作意识强；
6．能够吃苦耐劳；接受7×24的轮班值班。  
数据挖掘工程师：
工作地点：杭州
招聘人数：2人
职位描述：
深入分析海量数据；发现用户行为特征；为决策分析和精准化客户营销提供方案，
构建数据挖掘模型或算法；解决实际数据分析中的业务问题；推动相关数据应用不断发展。
任职要求：
1. 良好的逻辑分析能力；对数据敏感；善于从复杂问题或数据背后发现答案；
2. 熟悉数据挖掘原理和方法；掌握一种以上的数据处理和挖掘分析软件；如SAS.SPSS等；
3. 熟悉主流数据库应用；能够熟练编写SQL代码；
4. 熟悉计算机程序开发；至少能够熟练运用一种编程语言；如C/C++或JAVA等；
5. 良好的团队协作意识及沟通能力；勇于在压力下主动承担责任。  
前端开发工程师
工作地点：杭州
招聘人数：12名
职位描述：
1．负责产品设计的前端代码开发工作；产出原型；配合完成后端数据的接口；
2．解决不同浏览器及不同版本的兼容性问题；
3．负责对产品页面性能的优化和维护；
4．充分参与设计；给出前端技术解决方案并实现交互原型。
任职要求：
1．喜欢手写HTML/CSS/JavaScript/ActionScript 代码；了解web标准；
2．追求华丽高效的前端代码；了解可用性.可访问性的基本原则；有服务器端脚本语言
的实战经验；
3．平时爱好web标准；对互联网的新鲜事物.web服务密切关注；
4．熟练使用Firefox Firebug调试Web页面；熟练运用常见框架；如YUI/jQuery等。
无线支付
产品经理
工作地点：杭州
招聘人数：4名
职位描述：
1.负责移动互联网支付市场和用户需求研究；
2.负责移动支付产品规划；
3.负责移动终端产品设计；
4.持续产品优化，跟进产品生命周期。
任职要求：
1.计算机、数学或相关专业毕业，大学本科学历及以上；
2.敏锐的洞察力、分析判断能力和创新能力；
3.良好的沟通能力、团队协作和创新精神，以及抗压能力；
4.对Android、iOS 、Symbian等平台技术有了解者优先。
手机开发工程师（C++）
工作地点：杭州
招聘人数：2名
职位描述：
1. [...]]]></description>
			<content:encoded><![CDATA[<p>如果你感兴趣可以把简历投给我，我会帮你内部推荐，简历发送邮箱：heysql.com@gmail.com</p>
<p>信息比较长，如果你感兴趣那就耐心看岗位要求把，期待你的简历</p>
<p>招聘部门及岗位：  </p>
<p>技术部：<br />
JAVA开发工程师、测试工程师、C/C++开发工程师、数据开发工程师（ETL开发）、Linux系统工程师、<br />
Linux研发工程师、运维开发工程师、开发DBA、WEB安全工程师、系统安全工程师、系统管理工程师、<br />
大规模集群应用管理工程师、技术支持工程师、工具开发工程师、内网开发工程师、大规模网站监控工程师、<br />
数据挖掘工程师、前端开发工程师 </p>
<p>无线支付：无线产品经理、手机开发工程师（C++）、J2EE开发工程师、测试工程师<br />
商户事业部：培训专员、数据分析师—数据挖掘方向、技术支持、商户支持专员<br />
用户事业部：运营专员</p>
<p>下面是具体的岗位要求：</p>
<p>技术部：</p>
<p>JAVA开发工程师<br />
工作地点：杭州/上海<br />
招聘人数：267人<br />
职位描述:<br />
1.进行软件详细设计和编码实现；满足功能；确保性能.质量和安全；<br />
2.维护和升级现有软件产品；快速定位并修复现有软件缺陷。<br />
任职要求：<br />
1.专业不限；计算机.软件工程.数学等相关专业优先考虑；<br />
2.掌握Web编程；有使用Java语言进行Web开发的经验；了解Spring 等开源框架优先；<br />
3.熟悉Linux/Unix开发环境.常用设计模式.基于数据库的设计和开发；<br />
4.有系统分析和设计的项目经验者优先考虑；<br />
5.有良好的软件工程知识和质量意识；<br />
6.良好的学习沟通能力；团队合作意识及抗压能力。  </p>
<p>测试工程师<br />
工作地点：杭州<br />
招聘人数:68人<br />
职位描述：<br />
1.进行业务需求分析和系统设计分析；设计测试计划和测试方案；<br />
2.根据用例对系统进行测试；发现；报告和跟踪缺陷；<br />
3.应用自动化测试方式设计和编写自动化测试脚本或自主开发测试工具；<br />
任职要求：<br />
1.计算机.软件工程相关专业大学本科学历及以上；<br />
2.具备良好的程序编写基础思想与技能；有C或C++或C#或Java的实际应用经验；有B/S系统编程经验优先；<br />
3.熟悉SQL基本语法；了解SQL Server或Oracle数据库的基本应用及数据库设计基础；<br />
4.熟悉软件工程与软件测试基本流程与理念；有志于从事软件测试工作。有软件测试工作实践经验者优先；<br />
5.良好的团队合作精神；良好的沟通技巧；解决问题及抗压能力强。  </p>
<p>C/C++开发工程师<br />
工作地点：杭州<br />
招聘人数：5人<br />
职位描述：<br />
1．进行软件详细设计和编码实现；满足功能；确保性能.质量和安全；<br />
2．维护和升级现有软件产品；快速定位并修复现有软件缺陷。<br />
任职要求：<br />
1．本科及以上学历；计算机相关专业；<br />
2.熟练掌握C/C++语言.数据结构及算法；<br />
3.熟悉Linux的常用命令.操作和脚本语言；<br />
5.具有优秀的分析.解决实际问题的能力；<br />
6.良好的沟通能力.有责任心和团队合作意识。  </p>
<p>数据开发工程师（ETL开发）<br />
工作地点：杭州<br />
招聘人数：6人<br />
职位描述：<br />
1．支付宝数据仓库部门主要职责是决策支持；通过收集.分析.挖掘公司内所有数据(包含日志.数据库.文件.外部信息等)；<br />
2．为高层提供决策.战略数据支持；我们在数据库技术.分布式计算.数据挖掘.算法研究等方面拥有业内领先的实力。<br />
任职要求：<br />
1．本科及以上学历；计算机及相关专业毕业；<br />
2．具有很强的逻辑思维和推理能力；<br />
3．优秀的沟通和学习能力 ；有算法和数据挖掘背景者优先；<br />
4．熟悉SQL SERVER/ORACLE/DB2/MY SQL/ GREENPLUM等数据库中一种；有SQL开发经验者优先；<br />
5．对海量数据计算技术有强烈的兴趣；喜欢创新；挑战难题；有分布式计算平台（Hadoop,Hive更佳）经验者优先。  </p>
<p>Linux系统工程师<br />
工作地点：北京/杭州<br />
招聘人数： 10人<br />
职位描述：<br />
1．负责Linux内核等基础系统服务组件实现算法和源码的研究分析；<br />
2．针对支付宝的业务需求优化算法代码；增加新功能；使应用取得更佳的资源利用率；<br />
任职要求：<br />
1．熟悉Linux平台下的C/C++语言编程；对数据结构和算法设计有较深刻的理解；<br />
2．熟悉Linux（类UNIX）内核；阅读过内核中的主要模块(文件系统；TCP/IP, I/O；内存管理)源代码者优先；<br />
3．熟悉各种计算机体系结构(包括X86_64,MIPS等）；<br />
4．具备很强的分析和解决问题的能力；对于攻关疑难问题具有强烈的兴趣；<br />
5．对技术敏感而细致；乐于发现；分析和解决复杂问题；<br />
6．善于学习新的知识；具有开拓创新精神；<br />
7．很强的责任心；勤于动手；不怕繁琐；重视流程规范。  </p>
<p>Linux研发工程师<br />
工作地点：北京/杭州<br />
招聘人数：5人<br />
职位描述：<br />
1．负责各类基础服务平台研究.开发和优化；<br />
2．支付宝网站运行容量优化和稳定性技术研究和开发；<br />
3．针对业务需求；开发完善各业务基础平台；为各业务提供更好的底层平台支持。<br />
任职要求：<br />
1．计算机软件.数学等相关专业大学本科学历及以上；Linux社区成员优先；<br />
2．对在线支付.Linux开源软件等有浓厚的兴趣和钻研能力；<br />
3．具有出色的计算机算法和数据结构构建能力和实现能力；<br />
4．对技术敏感而细致；乐于发现；分析和解决复杂问题；<br />
5．具有良好的使命驱动感；具备良好的团队合作精神和沟通能力。 </p>
<p>运维开发工程师<br />
工作地点：杭州/上海<br />
招聘人数：5人<br />
职位描述：<br />
1．设计.开发自动化管理工具或系统；提升系统容量性能和稳定性；<br />
2．密切配合网站产品的设计.研发和部署；提升网站健壮性和运维性；<br />
3．对分布式应用和网站的稳定性.可用性.健壮性负责；<br />
4．研究制定运维策略.预案和相关解决方案；提升运维规范性。<br />
任职要求：<br />
1．对在线支付.Linux.WEB技术（Apache；MySQL；Tomcat）.脚本编程.JAVA开发等有浓厚的兴趣；<br />
2．熟悉TCP/IP.HTTP等协议；掌握PHP.Perl.Shell.JAVA等语言的一种；有Linux/Unix维护或开发经验优先；<br />
3．优秀的沟通能力；出色的学习与钻研能力；良好的问题分析与解决能力；<br />
4．具有良好的自我驱动能力和执行能力；以及获得结果的能力。  </p>
<p>开发DBA<br />
工作地点：杭州/上海<br />
招聘人数： 5人<br />
职位描述：<br />
1．参与开发项目建设；根据业务逻辑进行数据库方面设计和优化；<br />
2．审核程序中SQL语句和逻辑；进行性能优化；<br />
3．处理线上数据库的变更；确保项目发布；跟踪项目上线情况；发现并解问题；<br />
4．管理开发；测试环境的数据库。<br />
任职要求：<br />
1．本科以上学历；对计算机技术有浓厚的兴趣；<br />
2．对程序语言；数据结构或数据分析（数据统计）有较好的了解；<br />
3．熟悉Oracle或MySQL数据库；有以上两种数据库学习或实践经历；<br />
4．熟悉和灵活运用两种以上的脚本语言；包括但不限于：Shell.Perl；熟悉Java程序编写者优先；<br />
5．具备很强的分析和解决问题的能力；对于攻关疑难问题具有强烈的兴趣；<br />
6．具有良好的使命驱动感；具备良好的团队合作精神和沟通能力。  </p>
<p>WEB安全工程师<br />
工作地点：杭州/上海<br />
招聘人数：5人<br />
职位描述：<br />
1．负责WEB应用的安全测试和安全管理；<br />
2．参与应用系统安全开发流程；执行应用系统安全代码审核；<br />
3．合作开发完成安全产品。<br />
任职要求：<br />
1．了解信息系统安全攻防技术；有安全工具开发经验.安全技术大赛经验者优先；<br />
2．具有独立分析研究信息安全漏洞的能力；并制定完善的修补方案；<br />
3．熟悉Windows或Linux/Unix操作系统结构；有内核开发经验者优先；<br />
4．对TCP/IP协议和网络工程技术有深入了解；掌握网络编程技术；<br />
5．精通主流UNIX平台系统管理和网络管理；精通Perl；Shell编程；<br />
6．了解跨站脚本攻击.SQL注射等Web安全攻防原理；理解多种Web应用技术（Java.PHP.JSP）；并熟悉相关的安全问题；<br />
7．有独立判断问题能力；有较强的分析问题及提出解决建议方案的能力；<br />
8．具有良好的使命驱动感；具备良好的团队合作精神和沟通能力。  </p>
<p>系统安全工程师<br />
工作地点：杭州/上海<br />
招聘人数：5人<br />
职位描述：<br />
1．参与系统网络的漏洞分析；以及漏洞修补方案的制定；<br />
2．参与系统漏洞修补；应急响应信息系统安全事件；<br />
3．规范系统网络安全运维。<br />
任职要求：<br />
1．了解信息系统安全攻防技术；有安全工具开发经验.安全技术大赛经验者优先；<br />
2．具有独立分析研究信息安全漏洞的能力；并制定完善的修补方案；<br />
3．熟悉Windows或Linux/Unix操作系统结构；有内核开发经验者优先；<br />
4．对TCP/IP协议和网络工程技术有深入了解；掌握网络编程技术；<br />
5．精通主流Unix平台系统管理和网络管理；精通Perl；Shell编程;<br />
6．有独立判断问题能力；有较强的分析问题及提出解决建议方案的能力；<br />
7．具有良好的使命驱动感；具备良好的团队合作精神和沟通能力。  </p>
<p>系统管理工程师<br />
工作地点：北京/杭州<br />
招聘人数： 5人<br />
职位描述：<br />
1．负责Linux和Unix系统的运营.维护.优化等工作；<br />
2．负责存储.基础服务等方面的技术支持工作；<br />
3．负责安全或网络相关的辅助技术支持工作。<br />
任职要求：<br />
1．理工科专业大学本科学历及以上；Linux社区成员优先；<br />
2．熟悉Linux.Unix等操作系统的管理.维护.开发和使用；<br />
3．熟悉和灵活运用两种以上的脚本语言；包括但不限于：Shell.Perl等；<br />
4．熟悉TCP/IP协议.了解常用的网络服务和WEB服务器配置；<br />
5．了解WEB应用相关工具并拥有实际经验者优先；<br />
6．具备良好的团队合作精神和沟通能力，拥有优秀的解决问题能力；<br />
7．有较好专业基础者，可降低学历要求。  </p>
<p>大规模集群应用管理工程师<br />
工作地点：杭州/上海<br />
招聘人数：10人<br />
职位描述：<br />
1．大规模互联网集群应用的部署规划.实施.维护和优化；<br />
2．参与支付宝网站应用产品的设计和研发；提升系统性能和稳定性；<br />
3．解决线上涉及网站应用.网络.操作系统及相关软件程序的各种问题；<br />
4．研发和测试环境建设.维护和支持；解决测试环境的各种问题；提升测试环境效率。<br />
任职要求：<br />
1．对在线支付.Linux.WEB技术（Apache；MySQL；Tomcat）.脚本编程.JAVA开发等有浓厚的兴趣；<br />
2．熟悉TCP/IP.HTTP等协议；掌握PHP.Perl.Shell.JAVA等语言的一种；熟悉Linux/Unix维护或开发者优先；<br />
3．优秀的沟通能力；出色的学习与钻研能力；良好的问题分析与解决能力；<br />
4．具有良好的自我驱动能力和执行能力；以及获得结果的能力。  </p>
<p>技术支持工程师<br />
工作地点：杭州/上海<br />
招聘人数：5人<br />
职位描述：<br />
1．负责网站系统故障和问题的诊断.分析和解决；协调重大故障处理.分析；推进改善措施落实；<br />
2．针对故障以及网站维护等重大事件进行业务影响分析；并进行影响预警或通告；<br />
3．设计.开发技术支持流程和工具；提升技术支持服务水平和品质。<br />
任职要求：<br />
1．对互联网网站应用.计算机技术和解决问题具有浓厚的兴趣；<br />
2．熟悉Java开发语言或脚本编程语言；了解Linux和TCP/IP网络技术；<br />
3．具有良好的系统化思维.问题分析与解决能力；具有良好Troubleshooting技能；<br />
4．优秀的沟通和协调能力；具有很好的客户服务意识；<br />
5．具有良好的学习能力.自我驱动能力和执行能力，以及获得结果的能力。  </p>
<p>工具开发工程师<br />
工作地点：杭州<br />
招聘人数：5人<br />
职位描述：<br />
1．负责研发.运维工具和流程平台的开发和维护；提高研发.运行工作效率；<br />
2．负责公司部分工作工具和流程平台开发和支持；提高办公效率。<br />
任职要求：<br />
1．对研发流程和工具.运行服务流程和平台具有浓厚的兴趣；<br />
2．对Java和PHP等开发语言具有优秀的钻研能力和应用能力；<br />
3．熟悉Linux/Unix开发环境.常用设计模式.基于数据库的设计和开发；<br />
4．具有良好的软件工程和质量意识和能力；<br />
5．优秀的沟通和协调能力；具有很好的客户服务意识；<br />
6．具有良好的学习能力.自我驱动能力和执行能力；以及获得结果的能力。  </p>
<p>内网开发工程师<br />
工作地点：杭州<br />
招聘人数：2人<br />
职位描述：<br />
1．公司内部网站和工作流程开发和维护；<br />
2．公司办公信息系统开发和维护。<br />
任职要求：<br />
1．计算机相关专业毕业；<br />
2．对办公信息化建设.Java或PHP等开发语言有较好的基础和浓厚的兴趣；<br />
3．具有良好的快速学习能力和沟通能力；具有很好的客户服务意识。  </p>
<p>大规模网站监控工程师<br />
工作地点：杭州<br />
招聘人数：3人<br />
职位描述：<br />
1．支付宝网站业务和底层系统的运行健康状态监控；及时发现问题并有效协助处理；<br />
2．支付宝网站运行事件记录.跟踪.总结；并出具准确的运行或故障报告；<br />
3．对网站运行进行统计.分析；发现潜在的问题或趋势；并推动解决；<br />
4．负责监控系统日常运行维护；完善运行监控体系。<br />
任职要求：<br />
1．计算机或电子商务相关专业；<br />
2．对Linux操作系统；TCP/IP；Apache.Jboss等WEB应用具有浓厚的兴趣或钻研精神；<br />
3．具有良好的系统化思维.问题分析与解决能力；具有良好Troubleshooting技能；<br />
4．具有超强的学习能力和良好的自我驱动能力；<br />
5．具有良好的职业素养；工作认真.负责；团队合作意识强；<br />
6．能够吃苦耐劳；接受7×24的轮班值班。  </p>
<p>数据挖掘工程师：<br />
工作地点：杭州<br />
招聘人数：2人<br />
职位描述：<br />
深入分析海量数据；发现用户行为特征；为决策分析和精准化客户营销提供方案，<br />
构建数据挖掘模型或算法；解决实际数据分析中的业务问题；推动相关数据应用不断发展。<br />
任职要求：<br />
1. 良好的逻辑分析能力；对数据敏感；善于从复杂问题或数据背后发现答案；<br />
2. 熟悉数据挖掘原理和方法；掌握一种以上的数据处理和挖掘分析软件；如SAS.SPSS等；<br />
3. 熟悉主流数据库应用；能够熟练编写SQL代码；<br />
4. 熟悉计算机程序开发；至少能够熟练运用一种编程语言；如C/C++或JAVA等；<br />
5. 良好的团队协作意识及沟通能力；勇于在压力下主动承担责任。  </p>
<p>前端开发工程师<br />
工作地点：杭州<br />
招聘人数：12名</p>
<p>职位描述：<br />
1．负责产品设计的前端代码开发工作；产出原型；配合完成后端数据的接口；<br />
2．解决不同浏览器及不同版本的兼容性问题；<br />
3．负责对产品页面性能的优化和维护；<br />
4．充分参与设计；给出前端技术解决方案并实现交互原型。<br />
任职要求：<br />
1．喜欢手写HTML/CSS/JavaScript/ActionScript 代码；了解web标准；<br />
2．追求华丽高效的前端代码；了解可用性.可访问性的基本原则；有服务器端脚本语言<br />
的实战经验；<br />
3．平时爱好web标准；对互联网的新鲜事物.web服务密切关注；<br />
4．熟练使用Firefox Firebug调试Web页面；熟练运用常见框架；如YUI/jQuery等。</p>
<p>无线支付<br />
产品经理<br />
工作地点：杭州<br />
招聘人数：4名<br />
职位描述：<br />
1.负责移动互联网支付市场和用户需求研究；<br />
2.负责移动支付产品规划；<br />
3.负责移动终端产品设计；<br />
4.持续产品优化，跟进产品生命周期。<br />
任职要求：<br />
1.计算机、数学或相关专业毕业，大学本科学历及以上；<br />
2.敏锐的洞察力、分析判断能力和创新能力；<br />
3.良好的沟通能力、团队协作和创新精神，以及抗压能力；<br />
4.对Android、iOS 、Symbian等平台技术有了解者优先。</p>
<p>手机开发工程师（C++）<br />
工作地点：杭州<br />
招聘人数：2名<br />
职位描述：<br />
1.  按USECASE进行进行软件详细设计和编码实现，确保安全、质量和性能；<br />
2.  维护和升级现有软件产品，快速定位并修复现有软件缺陷。<br />
任职要求：<br />
1.  计算机、数学、电子或相关专业，大学本科学历及以上；<br />
2.  扎实的C++编程功底，深刻理解数据结构知识，丰富的程序设计经验；<br />
3.  熟悉各种智能手机OS平台，如symbian、winmobile、linux等等<br />
4.  有解决问题、钻研新技术的兴趣和能力,善于交流和表达,有良好的团队合作精神；<br />
5.  喜爱手机应用，玩机一族。</p>
<p>J2EE开发工程师<br />
工作地点：杭州<br />
招聘人数：4名<br />
职位描述：<br />
1. 按产品需求进行进行软件设计和编码实现，确保安全、质量和性能；<br />
2. 维护和升级现有软件产品，快速定位并修复现有软件缺陷。<br />
任职要求:<br />
1. 计算机、数学、电子或相关专业，大学本科学历及以上；<br />
2. 熟练掌握Java EE技术， 包括Servlet/JSP、JDBC、EJB、JMS、Web Service<br />
等，对各种开源的软件如Spring、Struts、Tomcat等有一定了解；<br />
3. 熟悉面向对象的分析和设计技术，包括设计模式、UML建模等；<br />
4.有解决问题、钻研新技术的兴趣和能力,善于交流和表达,有良好的团队合作精神。</p>
<p>商户事业部<br />
培训专员<br />
工作地点：杭州<br />
招聘人数：2人<br />
职位描述：<br />
1.负责商户合作部部门成员内部培训的相关策划、组织和开展工作；<br />
2.商户培训资料的收集、制作和整理；<br />
3.参与外部商户在线培训平台的建立工作；<br />
4.参与部分外部商户上门培训的工作。<br />
任职要求:<br />
1.了解支付宝的相关产品，熟练掌握者优先；<br />
2.乐观开朗，勇于接受挑战，抗压能力强；<br />
3.对培训工作富于热情，具有团队协作精神；<br />
4.能够熟练操作office；<br />
5.具有培训经历者优先。</p>
<p>数据分析师—数据挖掘方向<br />
工作地点：杭州<br />
招聘人数：2人<br />
职位描述：<br />
1、对海量业务数据进行分析挖掘，产出有效的模型供业务部门数据化运营使用；<br />
2、相关方向包括：用户行为和生命周期相关，风险控制相关，模型架构相关；<br />
3、熟练的sql语句编写能力，熟练oracle数据库客户端软件使用；<br />
任职要求：<br />
1、数学、统计、计算机等相关专业硕士及以上学历；<br />
2、具有深厚的统计学、数学、数据挖掘等相关知识，熟悉数据仓库和数据挖掘的相关技术；<br />
3、精通一种及以上数据挖掘工具（精通开源数据挖掘软件者优先），具有海量数据挖掘、分析相关项目实施经验，参加过完整的数据挖掘项目并有成功案例；有网站用户行为研究和文本挖掘经验尤佳；<br />
4、思维敏捷，良好的逻辑分析能力、良好的沟通及组织能力，能在一定压力下工作。</p>
<p>技术支持<br />
工作地点：北京、上海、深圳<br />
招聘人数：3人<br />
职位描述：<br />
1.负责参与商务的对外合作谈判，协助商务了解合作行业模式和商业模式，针对现有业务流程给出可实现技术方案；<br />
2.通过日常客户接触和谈判，收集和分析客户需求，整理形成文案，帮助公司改进产品；<br />
3.协调商户合作部们和产品部门的工作，加强沟通；<br />
4.对新产品，编写好用例代码，并且维护好其使用文档。<br />
任职要求：<br />
1.网络编程专业毕业，熟练asp, php, c# 或者 VB, java 任意一种；<br />
2.愿意加入创业团队，能承受较大的工作压力；<br />
3.经常编写网站程序或者页面，有网站开发经验者优先。</p>
<p>商户支持专员<br />
工作地点：杭州<br />
招聘人数：5人<br />
职位描述<br />
1.负责配合行业策略执行的相关支持工作；<br />
2.负责行业重点商户的审核、准入和联系工作；<br />
3.负责产品部门制度制定、执行和维护工作。<br />
任职要求：<br />
1.大学本科以上学历，计算机、电子商务、财务等专业优先考虑；<br />
2.学习能力强，具有创新精神，对于电子商务、在线支付有浓厚的兴趣；<br />
3.善于沟通，具有良好的服务意识和团队协作意识，责任心强，能承受较大工作压力；<br />
4.熟练使用各类office办公软件。</p>
<p>用户事业部<br />
运营专员<br />
工作地点：杭州<br />
招聘人数：3人<br />
职位描述：<br />
1． 分析支付宝会员特征，根据会员特征进行会员系分和会员运营；<br />
2． 分析互联网金融类应用，结合支付宝特点创新金融类产品或服务；<br />
3． 负责支付宝重点产品、重点频道的运营工作。<br />
任职要求：<br />
1．重点大学本科或以上学历，硕士优先（金融类、管理类、经济类专业），学习成绩优异；<br />
2．较强的学习能力和逻辑分析能力，并具强烈的责任心，主动性和团队合作精神；<br />
3．性格外向，优秀的沟通和语言表达能力；<br />
4．对互联网业务有深入的了解；<br />
5．良好的英文读写能力，能熟练查找、阅读和理解英语文献。</p>
]]></content:encoded>
			<wfw:commentRss>http://heysql.com/other/xiaozhao/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>支付宝-技术运营服务部-期待您的加入</title>
		<link>http://heysql.com/other/alipay-job/</link>
		<comments>http://heysql.com/other/alipay-job/#comments</comments>
		<pubDate>Fri, 20 Aug 2010 03:22:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[琐碎的其他]]></category>

		<guid isPermaLink="false">http://www.heysql.com/wordpress/?p=153</guid>
		<description><![CDATA[如果对下面的岗位有兴趣，请将简历发送到我的邮箱：heysql.com@gmail.com
主题注明应聘岗位，如果我觉得合适我会帮您内部推荐。
一、        招聘岗位和人数
岗位                                              人数 [...]]]></description>
			<content:encoded><![CDATA[<p><strong>如果对下面的岗位有兴趣，请将简历发送到我的邮箱：heysql.com@gmail.com<br />
主题注明应聘岗位，如果我觉得合适我会帮您内部推荐。</strong><br />
一、        招聘岗位和人数<br />
岗位                                              人数                            部门<br />
采购与资产管理员                                2                     支付宝技术部-运营服务部-应用管理组<br />
研发与测试环境管理工程师                      3                     支付宝技术部-运营服务部-应用管理组<br />
网站运行监控工程师                              3                    支付宝技术部-运营服务部-应用管理组<br />
应用运维工程师                                   2                     支付宝技术部-运营服务部-应用管理组<br />
技术服务台工程师                                1                     支付宝技术部-运营服务部-应用管理组<br />
行为审计专员                                     1                     支付宝技术部-运营服务部-安全中心</p>
<p>二、        岗位描述<br />
岗位：采购与资产管理员<br />
人数：2人<br />
工作地点：杭州<br />
岗位职责：<br />
1、   负责预算编制文案工作，以及预算执行、跟踪、分析；<br />
2、   根据预算和业务要求，进行采购审核、提请、跟踪和管理；<br />
3、   负责网站运行资产、设备管理，包括采购验收、入库、启用、维保、下线、报废等资产生命周期管理；<br />
4、   负责采购、资产管理相关制度的修改、完善，流程的完善；<br />
5、   负责资产设备成本分析和管理，有效控制资产成本。<br />
岗位要求：<br />
1、   熟悉Office使用，具有较好的文档能力，具有IT设备采购、资产管理工作经验的优先；<br />
2、   具有良好的沟通能力、快速学习能力和合作能力；<br />
3、   工作细致、认真，能吃苦耐劳。</p>
<p>岗位：研发与测试环境管理工程师<br />
人数：3人<br />
工作地点：杭州/上海<br />
岗位职责：<br />
1、   负责支付宝研发与测试环境建设、维护、支持和管理；<br />
2、   负责支付宝稳定测试环境的维护和联调支持工作。<br />
岗位要求：<br />
1、   本科以上学历，计算机或者相关专业，具有研发、测试相关经验者优先；<br />
2、   熟悉WEB相关技术，包括Apache，PHP，Jboss等应用的管理、配置；<br />
3、   了解Linux以及主要Unix网络服务，了解网络基本技术；<br />
4、   了解Java应用开发，了解Shell或Perl编程尤佳；<br />
5、   优秀的沟通能力，出色的学习与钻研能力，良好的问题分析与解决能力。</p>
<p>岗位：网站运行监控工程师<br />
人数：3人<br />
工作地点：杭州<br />
岗位职责：<br />
1、   负责支付宝网站业务和底层系统的运行健康状态监控，及时发现问题并有效协助处理；<br />
2、   负责支付宝网站运行事件记录、跟踪、总结，并出具准确的运行或故障报告；<br />
3、   对网站运行进行统计、分析，发现潜在的问题或趋势，并推动解决；<br />
4、   负责监控系统日常运行维护，完善运行监控体系。<br />
岗位要求：<br />
1、   计算机或电子商务相关专业，有网站监控、研发测试相关工作经验优先<br />
2、   熟悉Unix、Linux操作系统的使用，了解Apache、Jboss等Web应用服务器维护，了解脚本编写和开发；<br />
3、   具有良好的职业素养，工作认真、负责，团队合作意识强；<br />
4、   具有良好的学习能力和自我驱动能力；<br />
5、   能够吃苦耐劳，接受7×24的轮班值班。</p>
<p>岗位：应用运维工程师<br />
人数：3人<br />
工作地点：杭州/上海<br />
岗位职责：<br />
1、   支付宝网站应用的部署规划、实施、维护和优化；<br />
2、   参与支付宝网站应用产品研发，熟悉业务并给出稳定性要求和方案等；<br />
岗位要求：<br />
1、   本科以上学历，计算机或者相关专业，具有网站应用开发或维护经验者优先；<br />
2、   熟悉WEB相关技术，包括Apache，PHP，Jboss等应用的管理、配置和优化；<br />
3、   了解Linux以及主要Unix网络服务，了解网络基本技术；<br />
4、   熟悉Java应用开发，精通和灵活运用两种以上的脚本语言，包括：Shell、Perl等，尤佳；<br />
5、   优秀的沟通能力，出色的学习与钻研能力，良好的问题分析与解决能力。</p>
<p>岗位：技术服务台工程师<br />
人数：1人<br />
工作地点：杭州/上海<br />
岗位职责：<br />
1、   负责网站系统故障和问题的记录、跟踪、解决和关闭；<br />
2、   协调重大故障处理、分析和总结报告，跟踪、推进落实相应改善措施；<br />
3、   针对故障以及网站维护等重大事件进行业务影响分析，并进行影响预警或通告；<br />
4、   对故障和问题进行统计分析，提出改进方案和建议。<br />
岗位要求：<br />
1、   计算机或电子商务相关专业，有客户服务、技术支持相关工作经验优先<br />
2、   熟悉支付宝网站业务，具有一定的计算机系统运行基础知识；<br />
3、   具有良好的系统化思维，良好的问题分析与解决能力；<br />
4、   优秀的沟通和协调能力，行动以结果为导向，具有很好的客户服务意识；<br />
5、   具有良好的学习能力和自我驱动能力。。</p>
<p>岗位：行为审计专员<br />
人数：1人<br />
工作地点：杭州<br />
岗位职责：<br />
1、   对线上系统中关键操作日志进行监督检查和审计，且完成日常报表分析统计；<br />
2、   对权限进行规范化管理，且制定并更新运行管理人员操作风险控制策略；<br />
3、   对日常规章制度进行审核，对安全流程及策略进行优化；<br />
4、   协助主管完成其他内部控制工作。<br />
岗位要求：<br />
1、   思路清晰，具备敏锐的风险意识和良好的风险识别能力；<br />
2、   有强烈的责任心，工作积极主动，乐于从事日常事务性工作，<br />
3、   具备优秀的团队合作精神，良好的沟通、表达能力；<br />
4、   有独立判断问题能力，有较强的分析问题及提出解决建议方案的能力；<br />
5、   有客户服务经验者优先。</p>
]]></content:encoded>
			<wfw:commentRss>http://heysql.com/other/alipay-job/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>两个泰瑞宝的设计-近期见闻</title>
		<link>http://heysql.com/other/%e4%b8%a4%e4%b8%aa%e6%b3%b0%e7%91%9e%e5%ae%9d%e7%9a%84%e8%ae%be%e8%ae%a1-%e8%bf%91%e6%9c%9f%e8%a7%81%e9%97%bb/</link>
		<comments>http://heysql.com/other/%e4%b8%a4%e4%b8%aa%e6%b3%b0%e7%91%9e%e5%ae%9d%e7%9a%84%e8%ae%be%e8%ae%a1-%e8%bf%91%e6%9c%9f%e8%a7%81%e9%97%bb/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 13:59:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[琐碎的其他]]></category>
		<category><![CDATA[don't make me think]]></category>
		<category><![CDATA[唠叨]]></category>
		<category><![CDATA[设计]]></category>

		<guid isPermaLink="false">http://www.heysql.com/wordpress/?p=149</guid>
		<description><![CDATA[  真的好久没有更新博客了，最近确实很忙，工作上啊，LP那边也有些事，闲暇之余多为休息，上推，话说我的follower好久没有波动了诶。以后希望博客中多一些生活的感悟，可能说得太夸张了，起码是生活上的一些东东吧。
  本来一直想写篇关于如何做PPT做分享的方法方式的文章，主要是听了很多，我总结了很多，想了很多，我觉得我总结提炼创新的一些东西还不错，希望以后自己或者团队或者需要的人能用得上，先delay吧，过段时间补上。
  先水一篇吧，最近看到了两个比较糟糕的设计，也许我很不专业，毕竟是外行，但是一个外行都觉得糟糕的设计是不是真的有问题呢？先看第一个：

本意是“公交服务热线”，但实际看起来像什么呢？当时是别人发现这个问题的，其实以前如果不说我也觉得没问题，因为潜意识会认为那个是“公”字，但是如果你不去加入你的想法呢，只是看着什么理解成什么呢？是不是就有问题了，起码我觉得好的设计是不需要用户去想的，don&#8217;t make me think!
然后是第二个:

这个图片没有旋转90度，先凑合着看下。这个还是LP和我说的，她说她不会对空调定时，因为找不到地方。确实，咋一看确实没有，但是我就说你就不能打开下面的这个盖子，滑动一下就能看到里面一堆的按钮了啊。但是她的一句“我以为是放电池的”让我突然发现了问题，是的，很多时候我们作为一部分用户想当然的问题在另外的用户群看来并不是这样的，像这里她说她以为是电池盒，不是每个人都会捣腾，打开看看，你可以说大家都知道电池在后盖等等，但是如果在下滑盖上加个标示或者箭头是不是更好呢，去引导用户，打开了自然知道是什么不是什么了，要把用户想得傻一点，去带领他们，也许产品会更好，而不是自己拍拍脑袋就设计。
  好吧，水到这里，时间还早，可以洗洗再学习学习充充电。
]]></description>
			<content:encoded><![CDATA[<p>  真的好久没有更新博客了，最近确实很忙，工作上啊，LP那边也有些事，闲暇之余多为休息，上推，话说我的follower好久没有波动了诶。以后希望博客中多一些生活的感悟，可能说得太夸张了，起码是生活上的一些东东吧。<br />
  本来一直想写篇关于如何做PPT做分享的方法方式的文章，主要是听了很多，我总结了很多，想了很多，我觉得我总结提炼创新的一些东西还不错，希望以后自己或者团队或者需要的人能用得上，先delay吧，过段时间补上。<br />
  先水一篇吧，最近看到了两个比较糟糕的设计，也许我很不专业，毕竟是外行，但是一个外行都觉得糟糕的设计是不是真的有问题呢？先看第一个：<br />
<img src="http://pic.yupoo.com/nosql/270249b1035e/6vhwxu6h.jpg" alt="一个广告" /><br />
本意是“公交服务热线”，但实际看起来像什么呢？当时是别人发现这个问题的，其实以前如果不说我也觉得没问题，因为潜意识会认为那个是“公”字，但是如果你不去加入你的想法呢，只是看着什么理解成什么呢？是不是就有问题了，起码我觉得好的设计是不需要用户去想的，don&#8217;t make me think!<br />
然后是第二个:<br />
<img src="http://pic.yupoo.com/nosql/246359b108bd/lj1n72m9.jpg" alt="遥控器" /><br />
这个图片没有旋转90度，先凑合着看下。这个还是LP和我说的，她说她不会对空调定时，因为找不到地方。确实，咋一看确实没有，但是我就说你就不能打开下面的这个盖子，滑动一下就能看到里面一堆的按钮了啊。但是她的一句“我以为是放电池的”让我突然发现了问题，是的，很多时候我们作为一部分用户想当然的问题在另外的用户群看来并不是这样的，像这里她说她以为是电池盒，不是每个人都会捣腾，打开看看，你可以说大家都知道电池在后盖等等，但是如果在下滑盖上加个标示或者箭头是不是更好呢，去引导用户，打开了自然知道是什么不是什么了，要把用户想得傻一点，去带领他们，也许产品会更好，而不是自己拍拍脑袋就设计。<br />
  好吧，水到这里，时间还早，可以洗洗再学习学习充充电。</p>
]]></content:encoded>
			<wfw:commentRss>http://heysql.com/other/%e4%b8%a4%e4%b8%aa%e6%b3%b0%e7%91%9e%e5%ae%9d%e7%9a%84%e8%ae%be%e8%ae%a1-%e8%bf%91%e6%9c%9f%e8%a7%81%e9%97%bb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>my first wishlist</title>
		<link>http://heysql.com/other/my-first-wishlist/</link>
		<comments>http://heysql.com/other/my-first-wishlist/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 12:00:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[琐碎的其他]]></category>
		<category><![CDATA[wish]]></category>

		<guid isPermaLink="false">http://www.heysql.com/wordpress/other/my-first-wishlist/</guid>
		<description><![CDATA[未来一年的wishlist:
1.发挥本职工作的最大价值，更好的融入团队。
2.协助jocelyn童鞋找到适合自己的事情。
3.多交一些其他领域的朋友。
4.htc g2 and iphone 4
5.看三本以上的技术类书籍。
6.完善自己获取知识的渠道。
]]></description>
			<content:encoded><![CDATA[<p>未来一年的wishlist:<br />
1.发挥本职工作的最大价值，更好的融入团队。<br />
2.协助jocelyn童鞋找到适合自己的事情。<br />
3.多交一些其他领域的朋友。<br />
4.htc g2 and iphone 4<br />
5.看三本以上的技术类书籍。<br />
6.完善自己获取知识的渠道。</p>
]]></content:encoded>
			<wfw:commentRss>http://heysql.com/other/my-first-wishlist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>optimizer_search_depth</title>
		<link>http://heysql.com/mysql/optimizer_search_depth/</link>
		<comments>http://heysql.com/mysql/optimizer_search_depth/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 07:48:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[optimizer_search_depth]]></category>

		<guid isPermaLink="false">http://www.heysql.com/other/optimizer_search_depth/</guid>
		<description><![CDATA[optimizer_search_depth
The maximum depth of search performed by the query optimizer. Values larger than the number of relations in a query result in better query plans, but take longer to generate an execution plan for a query. Values smaller than the number of relations in a query return an execution plan quicker, but the resulting plan [...]]]></description>
			<content:encoded><![CDATA[<p>optimizer_search_depth<br />
The maximum depth of search performed by the query optimizer. Values larger than the number of relations in a query result in better query plans, but take longer to generate an execution plan for a query. Values smaller than the number of relations in a query return an execution plan quicker, but the resulting plan may be far from being optimal.<br />
其中的the number of relations in a query到底指什么？Mark一下</p>
]]></content:encoded>
			<wfw:commentRss>http://heysql.com/mysql/optimizer_search_depth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL的Clustered Table？</title>
		<link>http://heysql.com/mysql/mysql%e7%9a%84clustered-table%ef%bc%9f/</link>
		<comments>http://heysql.com/mysql/mysql%e7%9a%84clustered-table%ef%bc%9f/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 06:01:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Clustered Table]]></category>

		<guid isPermaLink="false">http://www.heysql.com/?p=73</guid>
		<description><![CDATA[http://www.yupoo.com/photos/nosql/73299304/
Mark一下。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.yupoo.com/photos/nosql/73299304/ ">http://www.yupoo.com/photos/nosql/73299304/</a></p>
<p>Mark一下。</p>
]]></content:encoded>
			<wfw:commentRss>http://heysql.com/mysql/mysql%e7%9a%84clustered-table%ef%bc%9f/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Midpoint Insertion Strategy的翻译和理解</title>
		<link>http://heysql.com/mysql/midpoint-insertion-strategy%e7%9a%84%e7%bf%bb%e8%af%91%e5%92%8c%e7%90%86%e8%a7%a3/</link>
		<comments>http://heysql.com/mysql/midpoint-insertion-strategy%e7%9a%84%e7%bf%bb%e8%af%91%e5%92%8c%e7%90%86%e8%a7%a3/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 10:20:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[hot子链]]></category>
		<category><![CDATA[LRU]]></category>
		<category><![CDATA[Midpoint Insertion Strategy]]></category>
		<category><![CDATA[warm子链]]></category>

		<guid isPermaLink="false">http://www.heysql.com/mysql/midpoint-insertion-strategy%e7%9a%84%e7%bf%bb%e8%af%91%e5%92%8c%e7%90%86%e8%a7%a3/</guid>
		<description><![CDATA[7.4.5.3.&#160;Midpoint Insertion Strategy
By default, the key cache management system uses a simple LRU strategy for choosing key cache blocks to be evicted, but it also supports a more sophisticated method called the midpoint insertion strategy. 
Key Cache管理系统默认使用LRU策略来选择丢弃的block，它同样支持一种更复杂的方法：midpoint insertion strategy。
When using the midpoint insertion strategy, the LRU chain is divided into two parts: a hot sublist [...]]]></description>
			<content:encoded><![CDATA[<h4 style="margin: 12pt 0in 3pt"><font size="5" face="Calibri">7.4.5.3.&nbsp;Midpoint Insertion Strategy</font></h4>
<p><font face="Times New Roman"><font size="3">By default, the key cache management system uses a simple LRU strategy for choosing key cache blocks to be evicted, but it also supports a more sophisticated method called the <em>midpoint insertion strategy.</em> <span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><o:p></o:p></span></font></font></p>
<p><font size="3"><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">Key Cache</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">管理系统默认使用</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">LRU</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">策略来选择丢弃的</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">block</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">，它同样支持一种更复杂的方法：</span><em><font face="Times New Roman">midpoint insertion strategy</font></em><em><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">。</span></em><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><o:p></o:p></span></font></p>
<p><font size="3" face="Times New Roman">When using the midpoint insertion strategy, the LRU chain is divided into two parts: a hot sublist and a warm sublist. The division point between two parts is not fixed, but the key cache management system takes care that the warm part is not &ldquo;<span class="quote">too short,</span>&rdquo; always containing at least </font><a href="http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_cache_division_limit"><code><span style="color: blue; font-size: 10pt; text-decoration: none; text-underline: none">key_cache_division_limit</span></code></a><font size="3" face="Times New Roman"> percent of the key cache blocks. </font><a href="http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_cache_division_limit"><code><span style="color: blue; font-size: 10pt; text-decoration: none; text-underline: none">key_cache_division_limit</span></code></a><font face="Times New Roman"><font size="3"> is a component of structured key cache variables, so its value is a parameter that can be set per cache. <span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><o:p></o:p></span></font></font></p>
<p><font size="3"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">当使用</span><em><font face="Times New Roman">midpoint insertion strategy</font></em><em><span style="font-style: normal; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-style: italic" lang="ZH-CN">策略时，</span></em><em><span style="font-style: normal; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-bidi-font-style: italic"><font face="Times New Roman">LRU</font></span></em><em><span style="font-style: normal; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-style: italic" lang="ZH-CN">的链被分成两部分：</span></em><em><span style="font-style: normal; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-bidi-font-style: italic"><font face="Times New Roman">hot</font></span></em><em><span style="font-style: normal; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-style: italic" lang="ZH-CN">子链和</span></em><em><span style="font-style: normal; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-bidi-font-style: italic"><font face="Times New Roman">warm</font></span></em><em><span style="font-style: normal; font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast; mso-bidi-font-style: italic" lang="ZH-CN">子链。分割点不是固定的，但是</span></em><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">Key Cache</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">管理系统控制着</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">warm</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">子链，不会让它过于短，至少是</span></font><a href="http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_cache_division_limit"><code><span style="color: blue; font-size: 10pt; text-decoration: none; text-underline: none">key_cache_division_limit</span></code></a><font size="3"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">的百分比于</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">Key Cache</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">的长度。</span></font><a href="http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_cache_division_limit"><code><span style="color: blue; font-size: 10pt; text-decoration: none; text-underline: none">key_cache_division_limit</span></code></a><font size="3"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">是</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">Key Cache</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">的系统变量，所以它可以为每个</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">Cache</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">设置。</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><o:p></o:p></span></font></p>
<p><font face="Times New Roman"><font size="3">When an index block is read from a table into the key cache, it is placed at the end of the warm sublist. After a certain number of hits (accesses of the block), it is promoted to the hot sublist. At present, the number of hits required to promote a block (3) is the same for all index blocks. <span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><o:p></o:p></span></font></font></p>
<p><font size="3"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">当一个索引块被从表中读取到</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">Key Cache</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">中时，它被放在</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">warm</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">子链的<span style="color: red">尾部</span>。在一定数量的访问</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">(</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">点击</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">)</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">后，</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">(</font></span><span style="font-family: 宋体; color: red; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">其实在这之前该</span><span style="color: red; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">block</font></span><span style="font-family: 宋体; color: red; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">已经在</span><span style="color: red; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">warm</font></span><span style="font-family: 宋体; color: red; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">子链的开始部分了</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">)</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">它被提升到</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">hot</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">子链中。在目前来说，对该</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">block</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">的访问次数是所有的</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">index blocks</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">的总和</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">(</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">数字的等同</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">)</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">。</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><o:p></o:p></span></font></p>
<p><font size="3" face="Times New Roman">A block promoted into the hot sublist is placed at the end of the list. The block then circulates within this sublist. If the block stays at the beginning of the sublist for a long enough time, it is demoted to the warm sublist. This time is determined by the value of the </font><a href="http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_cache_age_threshold"><code><span style="color: blue; font-size: 10pt; text-decoration: none; text-underline: none">key_cache_age_threshold</span></code></a><font face="Times New Roman"><font size="3"> component of the key cache.<span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><o:p></o:p></span></font></font></p>
<p><font size="3"><span style="mso-spacerun: yes"><font face="Times New Roman">&nbsp;</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">当一个</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">block</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">被提升到</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">hot</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">子链时，它是放在</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">hot</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">子链的<span style="color: red">尾部</span>。然后该</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">block</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">开始在</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">hot</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">子链中循环。如果该</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">block</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">在</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">hot</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">子链的开始部分待了很长时间，它会被降到</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">warm</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">子链。这次决定的是</span></font><a href="http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_cache_age_threshold"><code><span style="color: blue; font-size: 10pt; text-decoration: none; text-underline: none">key_cache_age_threshold</span></code></a><font size="3"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">系统变量。</span></font></p>
<p><font size="3"><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><o:p></o:p></span></font>&nbsp;<img class="" alt="" src="http://pic.yupoo.com/nosql/4793891fd1f7/t4rqlh6b.jpg" /></p>
<p><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><o:p></o:p></span></p>
<p><font size="3" face="Times New Roman">The threshold value prescribes that, for a key cache containing </font><code><em><span style="font-size: 10pt">N</span></em></code><font size="3" face="Times New Roman"> blocks, the block at the beginning of the hot sublist not accessed within the last </font><code><em><span style="font-size: 10pt">N</span></em></code><code><span style="font-size: 10pt"> &times; key_cache_age_threshold / 100</span></code><font face="Times New Roman"><font size="3"> hits is to be moved to the beginning of the warm sublist. It then becomes the first candidate for eviction, because blocks for replacement always are taken from the beginning of the warm sublist. <span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><o:p></o:p></span></font></font></p>
<p><font size="3"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">假定</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">Key Cache</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">中有</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">N</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">个</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">blocks</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">，临界值规定了：在</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">hot</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">子链开始部分的</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">block</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">在最近的</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">(</font></span></font><code><em><span style="font-size: 10pt">N</span></em></code><code><span style="font-size: 10pt"> &times; <span style="color: red">key_cache_age_threshold</span> / 100</span></code><font size="3"><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">)</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">次访问中没有涉及的话被放回</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">warm</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">子链的开始部分。</span></font><code><span style="color: red; font-size: 10pt">key_cache_age_threshold</span></code><code><span style="font-family: 宋体; color: red; font-size: 10pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">决定了频率的高低</span></code><code><span style="color: red; font-size: 10pt; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast">(</span></code><code><span style="font-family: 宋体; color: red; font-size: 10pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">最小值</span></code><code><span style="color: red; font-size: 10pt; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast">100)</span></code><code><span style="font-family: 宋体; color: red; font-size: 10pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">。</span></code><code><span style="font-family: 宋体; font-size: 10pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">然后该</span></code><code><span style="font-size: 10pt; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast">block</span></code><code><span style="font-family: 宋体; font-size: 10pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">成为最有可能被丢弃的，因为新的</span></code><code><span style="font-size: 10pt; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast">block</span></code><code><span style="font-family: 宋体; font-size: 10pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">替换就发生在</span></code><code><span style="font-size: 10pt; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast">warm</span></code><code><span style="font-family: 宋体; font-size: 10pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">子链的开始部分。</span></code><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><o:p></o:p></span></p>
<p><font size="3" face="Times New Roman">The midpoint insertion strategy allows you to keep more-valued blocks always in the cache. If you prefer to use the plain LRU strategy, leave the </font><a href="http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_cache_division_limit"><code><span style="color: blue; font-size: 10pt; text-decoration: none; text-underline: none">key_cache_division_limit</span></code></a><font face="Times New Roman"><font size="3"> value set to its default of 100. <span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><o:p></o:p></span></font></font></p>
<p><font size="3"><font face="Times New Roman">midpoint insertion strategy</font><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">能让你保持重要的</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">block</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">始终在</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">Cache</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">中</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">(</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">设置</span></font><code><span style="color: red; font-size: 10pt">key_cache_age_threshold</span></code><code><span style="font-family: 宋体; color: red; font-size: 10pt; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">即可</span></code><font size="3"><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">)</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">。如果你还是想使用</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">LRU</font></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">策略，那么将</span></font><a href="http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_cache_division_limit"><code><span style="color: blue; font-size: 10pt; text-decoration: none; text-underline: none">key_cache_division_limit</span></code></a><font size="3"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-fareast" lang="ZH-CN">设置成默认的</span><span style="mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast"><font face="Times New Roman">100<o:p></o:p></font></span></font></p>
<p><font size="3" face="Times New Roman">The midpoint insertion strategy helps to improve performance when execution of a query that requires an index scan effectively pushes out of the cache all the index blocks corresponding to valuable high-level B-tree nodes. To avoid this, you must use a midpoint insertion strategy with the </font><a href="http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_cache_division_limit"><code><span style="color: blue; font-size: 10pt; text-decoration: none; text-underline: none">key_cache_division_limit</span></code></a><font size="3" face="Times New Roman"> set to much less than 100. Then valuable frequently hit nodes are preserved in the hot sublist during an index scan operation as well. </font></p>
<p style="line-height: 12pt; margin: 0in 0in 10pt; background: white" class="MsoNormal"><font size="3"><font face="Calibri">midpoint insertion strategy</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">帮助你提升执行全索引扫描时几乎所有的</span><font face="Calibri">Cache(<span style="color: red">warm</span></font><span style="font-family: 宋体; color: red; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">子链的部分</span><font face="Calibri">)</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">都要替换成新的</span><font face="Calibri">B</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">树节点的性能。为了避免对性能产生较大的影响，你必须将</span></font><a href="http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_key_cache_division_limit"><code><span style="color: blue; font-size: 10pt; text-decoration: none; mso-fareast-font-family: 宋体; text-underline: none">key_cache_division_limit</span></code></a><font size="3"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">设置成小于</span><font face="Calibri">100(</font><span style="font-family: 宋体; color: red; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">有效地控制其影响范围</span><font face="Calibri">)</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">。这样重要的经常访问的节点在全索引扫描时就被保护在</span><font face="Calibri">hot</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">子链中。</span></font></p>
<p style="line-height: 12pt; margin: 0in 0in 10pt; background: white" class="MsoNormal"><font size="3"><span style="font-family: 宋体; color: red; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">总结：相当于在一个</span><span style="color: red"><font face="Calibri">LRU</font></span><span style="font-family: 宋体; color: red; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">链上虚拟了两个链</span><span style="color: red"><font face="Calibri">(hot</font></span><span style="font-family: 宋体; color: red; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">和</span><span style="color: red"><font face="Calibri">warm)</font></span><span style="font-family: 宋体; color: red; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">，全索引扫描时不会波及全部。</span></font><span style="color: red"><o:p></o:p></span></p>
]]></content:encoded>
			<wfw:commentRss>http://heysql.com/mysql/midpoint-insertion-strategy%e7%9a%84%e7%bf%bb%e8%af%91%e5%92%8c%e7%90%86%e8%a7%a3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Refman 7.4.5 The MyISAM Key Cache 译文</title>
		<link>http://heysql.com/mysql/mysql-refman-7-4-5-the-myisam-key-cache-%e8%af%91%e6%96%87/</link>
		<comments>http://heysql.com/mysql/mysql-refman-7-4-5-the-myisam-key-cache-%e8%af%91%e6%96%87/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 07:52:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[block]]></category>
		<category><![CDATA[MyISAM Key Cach]]></category>

		<guid isPermaLink="false">http://www.heysql.com/mysql/mysql-refman-7-4-5-the-myisam-key-cache-%e8%af%91%e6%96%87/</guid>
		<description><![CDATA[原文：



7.4.5.&#160;The MyISAM Key Cache




[+/-]

7.4.5.1. Shared Key Cache Access
7.4.5.2. Multiple Key Caches
7.4.5.3. Midpoint Insertion Strategy
7.4.5.4. Index Preloading
7.4.5.5. Key Cache Block Size
7.4.5.6. Restructuring a Key Cache



To minimize disk I/O, the MyISAM storage engine exploits a strategy that is used by many database management systems. It employs a cache mechanism to keep the most frequently accessed table blocks [...]]]></description>
			<content:encoded><![CDATA[<p><font color="#ff0000">原文：</font></p>
<div class="titlepage">
<div>
<div>
<h3 class="title">7.4.5.&nbsp;The <code class="literal">MyISAM</code> Key Cache</h3>
</div>
</div>
</div>
<div class="toc">
<p><small><font size="2">[</font><a class="tocdetail" onkeypress="if<br />
(event.keyCode == 13) { toggle('tocdetail-0');}" onclick="toggle('tocdetail-0');" href="http://dev.mysql.com/doc/refman/5.1/en/myisam-key-cache.html#nolinkhere"><font size="2">+/-</font></a><font size="2">]</font></small></p>
<dl id="tocdetail-0">
<dt><span class="section"><a href="http://dev.mysql.com/doc/refman/5.1/en/shared-key-cache.html">7.4.5.1. Shared Key Cache Access</a></span></dt>
<dt><span class="section"><a href="http://dev.mysql.com/doc/refman/5.1/en/multiple-key-caches.html">7.4.5.2. Multiple Key Caches</a></span></dt>
<dt><span class="section"><a href="http://dev.mysql.com/doc/refman/5.1/en/midpoint-insertion.html">7.4.5.3. Midpoint Insertion Strategy</a></span></dt>
<dt><span class="section"><a href="http://dev.mysql.com/doc/refman/5.1/en/index-preloading.html">7.4.5.4. Index Preloading</a></span></dt>
<dt><span class="section"><a href="http://dev.mysql.com/doc/refman/5.1/en/key-cache-block-size.html">7.4.5.5. Key Cache Block Size</a></span></dt>
<dt><span class="section"><a href="http://dev.mysql.com/doc/refman/5.1/en/key-cache-restructuring.html">7.4.5.6. Restructuring a Key Cache</a></span></dt>
</dl>
</div>
<p><a class="indexterm" name="id2906164"></a><a class="indexterm" name="id2906173"></a></p>
<p>To minimize disk I/O, the <code class="literal">MyISAM</code> storage engine exploits a strategy that is used by many database management systems. It employs a cache mechanism to keep the most frequently accessed table blocks in memory:</p>
<div class="itemizedlist">
<ul>
<li>
<p>For index blocks, a special structure called the <em class="firstterm">key cache</em> (or <em class="firstterm">key buffer</em>) is maintained. The structure contains a number of block buffers where the most-used index blocks are placed.</p>
</li>
<li>
<p>For data blocks, MySQL uses no special cache. Instead it relies on the native operating system file system cache.</p>
</li>
</ul>
</div>
<p>This section first describes the basic operation of the <code class="literal">MyISAM</code> key cache. Then it discusses features that improve key cache performance and that enable you to better control cache operation:</p>
<div class="itemizedlist">
<ul>
<li>
<p>Multiple sessions can access the cache concurrently.</p>
</li>
<li>
<p>You can set up multiple key caches and assign table indexes to specific caches.</p>
</li>
</ul>
</div>
<p>To control the size of the key cache, use the <a href="http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_key_buffer_size"><code class="literal">key_buffer_size</code></a> system variable. If this variable is set equal to zero, no key cache is used. The key cache also is not used if the <a href="http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_key_buffer_size"><code class="literal">key_buffer_size</code></a> value is too small to allocate the minimal number of block buffers (8).</p>
<p class="mnmas"><strong>MySQL Enterprise.&nbsp;</strong> For expert advice on identifying the optimum size for <a href="http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_key_buffer_size"><code class="literal">key_buffer_size</code></a>, subscribe to the MySQL Enterprise Monitor. See http://www.mysql.com/products/enterprise/advisors.html.</p>
<p>When the key cache is not operational, index files are accessed using only the native file system buffering provided by the operating system. (In other words, table index blocks are accessed using the same strategy as that employed for table data blocks.)</p>
<p>An index block is a contiguous unit of access to the <code class="literal">MyISAM</code> index files. Usually the size of an index block is equal to the size of nodes of the index B-tree. (Indexes are represented on disk using a B-tree data structure. Nodes at the bottom of the tree are leaf nodes. Nodes above the leaf nodes are nonleaf nodes.)</p>
<p>All block buffers in a key cache structure are the same size. This size can be equal to, greater than, or less than the size of a table index block. Usually one these two values is a multiple of the other.</p>
<p>When data from any table index block must be accessed, the server first checks whether it is available in some block buffer of the key cache. If it is, the server accesses data in the key cache rather than on disk. That is, it reads from the cache or writes into it rather than reading from or writing to disk. Otherwise, the server chooses a cache block buffer containing a different table index block (or blocks) and replaces the data there by a copy of required table index block. As soon as the new index block is in the cache, the index data can be accessed.</p>
<p>If it happens that a block selected for replacement has been modified, the block is considered &ldquo;<span class="quote">dirty.</span>&rdquo; In this case, prior to being replaced, its contents are flushed to the table index from which it came.</p>
<p>Usually the server follows an <em class="firstterm">LRU (Least Recently Used)</em> strategy: When choosing a block for replacement, it selects the least recently used index block. To make this choice easier, the key cache module maintains all used blocks in a special list (<em class="firstterm">LRU chain</em>) ordered by time of use. When a block is accessed, it is the most recently used and is placed at the end of the list. When blocks need to be replaced, blocks at the beginning of the list are the least recently used and become the first candidates for eviction.</p>
<p style="line-height: 12pt; margin: 0in 0in 10pt; background: white" class="MsoNormal"><font color="#0000ff" size="2"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">译文：</span></font></p>
<p style="line-height: 12pt; margin: 0in 0in 10pt; background: white" class="MsoNormal"><font size="2"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">为了减小</span><font face="Calibri">disk</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">的</span><font face="Calibri">I/O</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">，</span><font face="Calibri">MyISAM</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">的存储引擎和一般的数据库系统一样，使用了缓存机制保存经常访问的</span><font face="Calibri">block(index block)</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">。</span></font></p>
<ul style="margin-top: 0in" type="disc">
<li style="line-height: 12pt; margin: 0in 0in 10pt; background: white; mso-list: l1 level1 lfo1" class="MsoNormal"><font size="2"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">对于索引块</span><font face="Calibri">(index block)</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">，</span><font face="Calibri">Key Cache</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">中保存了常用的索引块。</span></font></li>
<li style="line-height: 12pt; margin: 0in 0in 10pt; background: white; mso-list: l1 level1 lfo1" class="MsoNormal"><font size="2"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">对于数据块</span><font face="Calibri">(data block)</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">，</span><font face="Calibri">MySQL</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">没有使用</span><font face="Calibri">Cache</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">，只是使用了操作系统中文件系统本身的</span><font face="Calibri">Cache</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">。</span></font></li>
</ul>
<p style="line-height: 12pt; margin: 0in 0in 10pt; background: white" class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN"><font size="2">基本的功能机制和性能优化选项。</font></span></p>
<ul style="margin-top: 0in" type="disc">
<li style="line-height: 12pt; margin: 0in 0in 10pt; background: white; mso-list: l0 level1 lfo2" class="MsoNormal"><font size="2"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">多</span><font face="Calibri">session</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">并发访问</span><font face="Calibri">Cache</font></font></li>
<li style="line-height: 12pt; margin: 0in 0in 10pt; background: white; mso-list: l0 level1 lfo2" class="MsoNormal"><font size="2"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">可以</span><font face="Calibri">set up</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">多重</span><font face="Calibri">Key Cache</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">，并指定一个</span><font face="Calibri">table index</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">给指定的</span><font face="Calibri">Cache</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">。</span></font></li>
</ul>
<p style="line-height: 12pt; margin: 0in 0in 10pt; background: white" class="MsoNormal"><font size="2"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">参数</span><font face="Calibri">key_buffer_size</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">设置为</span><font face="Calibri">0</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">或者过小时不使用</span><font face="Calibri">Key Cache</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">，也就是和数据块一样只能使用操作系统中文件系统自带的</span><font face="Calibri">Cache</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">。</span></font></p>
<p style="line-height: 12pt; margin: 0in 0in 10pt; background: white" class="MsoNormal"><font size="2"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">一个索引块一般是</span><font face="Calibri">MyISAM</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">的索引文件的连续访问的组合。一般索引块的大小是</span><font face="Calibri">MyISAM</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">的索引结构中节点的大小</span><font face="Calibri">(MyISAM</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">的索引以</span><font face="Calibri">BTREE</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">结构存放</span><font face="Calibri">)</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">。</span></font></p>
<p style="line-height: 12pt; margin: 0in 0in 10pt; background: white" class="MsoNormal"><font size="2"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">所有</span><font face="Calibri">Key Cache</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">中的</span><font face="Calibri">block buffer</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">是一样大的，可以大于、等于、小于索引块的大小。</span></font></p>
<p style="line-height: 12pt; margin: 0in 0in 10pt; background: white" class="MsoNormal"><font size="2"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">当需要访问索引数据时，服务器检查是否有现成的</span><font face="Calibri">block buffer</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">在</span><font face="Calibri">Key Cache</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">中。若有，则从</span><font face="Calibri">Key Cache</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">中读取而不是</span><font face="Calibri">disk</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">上读取。也就是说，对索引的读和写均在</span><font face="Calibri">Key Cache</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">上</span><font face="Calibri">(</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">写的部分到时候要</span><font face="Calibri">flush</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">到</span><font face="Calibri">disk</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">上</span><font face="Calibri">)</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">。若没有，服务器将</span><font face="Calibri">Cache</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">中包含的不同表的索引块的</span><font face="Calibri">block buffer</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">替换成请求的索引块的拷贝，然后再提供读写。</span></font></p>
<p style="line-height: 12pt; margin: 0in 0in 10pt; background: white" class="MsoNormal"><font size="2"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">当一个</span><font face="Calibri">block</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">被替换之前已经被修改过了，这个</span><font face="Calibri">block</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">就被标记为</span><font face="Calibri">&rdquo;</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">脏</span><font face="Calibri">&rdquo;</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">。这种情况下，在再次替换前，先将这个</span><font face="Calibri">block flush</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">到所属表的</span><font face="Calibri">index</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">文件上</span><font face="Calibri">(</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">在</span><font face="Calibri">disk</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">上</span><font face="Calibri">)</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">。</span></font></p>
<p style="line-height: 12pt; margin: 0in 0in 10pt; background: white" class="MsoNormal"><font size="2"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">服务器一般使用</span><font face="Calibri">LRU</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">策略：当选择被替换的</span><font face="Calibri">block</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">时，选择最近最少使用的索引块。为了更好地实现该算法，</span><font face="Calibri">Key Cache</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">模块将所有的</span><font face="Calibri">block</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">按时间顺序放在一个</span><font face="Calibri">list</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">中</span><font face="Calibri">(LRU</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">链</span><font face="Calibri">)</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">，当一个</span><font face="Calibri">block</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">被访问时，它被放在最近最常使用的位置</span><font face="Calibri">(</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">即</span><font face="Calibri">LRU</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">链的结尾，</span><font face="Calibri">MRU</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">端</span><font face="Calibri">)</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">。当一个</span><font face="Calibri">block</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">需要被替换时，</span><font face="Calibri">LRU</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">的开头部分</span><font face="Calibri">(LRU</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">端</span><font face="Calibri">)</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">就是优先考虑的部分，没有再到</span><font face="Calibri">MRU</font><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-hansi-font-family: Calibri" lang="ZH-CN">部分找。</span></font></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://heysql.com/mysql/mysql-refman-7-4-5-the-myisam-key-cache-%e8%af%91%e6%96%87/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CAP原理与最终一致性(转载)</title>
		<link>http://heysql.com/mysql/cap%e5%8e%9f%e7%90%86%e4%b8%8e%e6%9c%80%e7%bb%88%e4%b8%80%e8%87%b4%e6%80%a7%e8%bd%ac%e8%bd%bd/</link>
		<comments>http://heysql.com/mysql/cap%e5%8e%9f%e7%90%86%e4%b8%8e%e6%9c%80%e7%bb%88%e4%b8%80%e8%87%b4%e6%80%a7%e8%bd%ac%e8%bd%bd/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 09:03:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[CAP]]></category>
		<category><![CDATA[eventually consistent]]></category>
		<category><![CDATA[最终一致性]]></category>

		<guid isPermaLink="false">http://www.heysql.com/mysql/cap%e5%8e%9f%e7%90%86%e4%b8%8e%e6%9c%80%e7%bb%88%e4%b8%80%e8%87%b4%e6%80%a7%e8%bd%ac%e8%bd%bd/</guid>
		<description><![CDATA[Ningoo的一篇博文，写得很好，转载一下。
原文：http://www.ningoo.net/html/2010/cap_theorem_and_eventually_consistent.html
CAP原理(CAP Theorem)
在足球比赛里，一个球员在一场比赛中进三个球，称之为帽子戏法(Hat-trick)。在分布式数据系统中，也有一个帽子原理(CAP Theorem)，不过此帽子非彼帽子。CAP原理中，有三个要素：

一致性(Consistency)
可用性(Availability)
分区容忍性(Partition tolerance)

CAP原理指的是，这三个要素最多只能同时实现两点，不可能三者兼顾。因此在进行分布式架构设计时，必须做出取舍。而对于分布式数据系统，分区容忍性是基本要求，否则就失去了价值。因此设计分布式数据系统，就是在一致性和可用性之间取一个平衡。对于大多数web应用，其实并不需要强一致性，因此牺牲一致性而换取高可用性，是目前多数分布式数据库产品的方向。
当然，牺牲一致性，并不是完全不管数据的一致性，否则数据是混乱的，那么系统可用性再高分布式再好也没有了价值。牺牲一致性，只是不再要求关系型数据库中的强一致性，而是只要系统能达到最终一致性即可，考虑到客户体验，这个最终一致的时间窗口，要尽可能的对用户透明，也就是需要保障&#8220;用户感知到的一致性&#8221;。通常是通过数据的多份异步复制来实现系统的高可用和数据的最终一致性的，&#8220;用户感知到的一致性&#8221;的时间窗口则取决于数据复制到一致状态的时间。
最终一致性(eventually consistent)
对于一致性，可以分为从客户端和服务端两个不同的视角。从客户端来看，一致性主要指的是多并发访问时更新过的数据如何获取的问题。从服务端来看，则是更新如何复制分布到整个系统，以保证数据最终一致。一致性是因为有并发读写才有的问题，因此在理解一致性的问题时，一定要注意结合考虑并发读写的场景。
从客户端角度，多进程并发访问时，更新过的数据在不同进程如何获取的不同策略，决定了不同的一致性。对于关系型数据库，要求更新过的数据能被后续的访问都能看到，这是强一致性。如果能容忍后续的部分或者全部访问不到，则是弱一致性。如果经过一段时间后要求能访问到更新后的数据，则是最终一致性。
最终一致性根据更新数据后各进程访问到数据的时间和方式的不同，又可以区分为：


因果一致性。如果进程A通知进程B它已更新了一个数据项，那么进程B的后续访问将返回更新后的值，且一次写入将保证取代前一次写入。与进程A无因果关系的进程C的访问遵守一般的最终一致性规则。
&#8220;读己之所写（read-your-writes）&#8221;一致性。当进程A自己更新一个数据项之后，它总是访问到更新过的值，绝不会看到旧值。这是因果一致性模型的一个特例。
会话（Session）一致性。这是上一个模型的实用版本，它把访问存储系统的进程放到会话的上下文中。只要会话还存在，系统就保证&#8220;读己之所写&#8221;一致性。如果由于某些失败情形令会话终止，就要建立新的会话，而且系统的保证不会延续到新的会话。
单调（Monotonic）读一致性。如果进程已经看到过数据对象的某个值，那么任何后续访问都不会返回在那个值之前的值。
单调写一致性。系统保证来自同一个进程的写操作顺序执行。要是系统不能保证这种程度的一致性，就非常难以编程了。


上述最终一致性的不同方式可以进行组合，例如单调读一致性和读己之所写一致性就可以组合实现。并且从实践的角度来看，这两者的组合，读取自己更新的数据，和一旦读取到最新的版本不会再读取旧版本，对于此架构上的程序开发来说，会少很多额外的烦恼。
从服务端角度，如何尽快将更新后的数据分布到整个系统，降低达到最终一致性的时间窗口，是提高系统的可用度和用户体验非常重要的方面。对于分布式数据系统：

N &#8212; 数据复制的份数
W &#8212; 更新数据是需要保证写完成的节点数
R &#8212; 读取数据的时候需要读取的节点数

如果W+R&#62;N，写的节点和读的节点重叠，则是强一致性。例如对于典型的一主一备同步复制的关系型数据库，N=2,W=2,R=1，则不管读的是主库还是备库的数据，都是一致的。
如果W+R&#60;=N，则是弱一致性。例如对于一主一备异步复制的关系型数据库，N=2,W=1,R=1，则如果读的是备库，就可能无法读取主库已经更新过的数据，所以是弱一致性。
对于分布式系统，为了保证高可用性，一般设置N&#62;=3。不同的N,W,R组合，是在可用性和一致性之间取一个平衡，以适应不同的应用场景。

如果N=W,R=1，任何一个写节点失效，都会导致写失败，因此可用性会降低，但是由于数据分布的N个节点是同步写入的，因此可以保证强一致性。
如果N=R,W=1，只需要一个节点写入成功即可，写性能和可用性都比较高。但是读取其他节点的进程可能不能获取更新后的数据，因此是弱一致性。这种情况下，如果W&#60;(N+1)/2，并且写入的节点不重叠的话，则会存在写冲突

]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ningoo.net/">Ningoo</a>的一篇博文，写得很好，转载一下。</p>
<p>原文：<a href="http://www.ningoo.net/html/2010/cap_theorem_and_eventually_consistent.html">http://www.ningoo.net/html/2010/cap_theorem_and_eventually_consistent.html</a></p>
<p><strong>CAP原理(CAP Theorem)</strong></p>
<p>在足球比赛里，一个球员在一场比赛中进三个球，称之为帽子戏法(Hat-trick)。在分布式数据系统中，也有一个帽子原理(CAP Theorem)，不过此帽子非彼帽子。CAP原理中，有三个要素：</p>
<ul>
<li>一致性(<strong>C</strong>onsistency)</li>
<li>可用性(<strong>A</strong>vailability)</li>
<li>分区容忍性(<strong>P</strong>artition tolerance)</li>
</ul>
<p>CAP原理指的是，这三个要素最多只能同时实现两点，不可能三者兼顾。因此在进行分布式架构设计时，必须做出取舍。而<strong>对于分布式数据系统，分区容忍性是基本要求</strong>，否则就失去了价值。因此设计分布式数据系统，就是在一致性和可用性之间取一个平衡。对于大多数web应用，其实并不需要强一致性，因此牺牲一致性而换取高可用性，是目前多数分布式数据库产品的方向。</p>
<p>当然，牺牲一致性，并不是完全不管数据的一致性，否则数据是混乱的，那么系统可用性再高分布式再好也没有了价值。牺牲一致性，只是不再要求关系型数据库中的强一致性，而是只要系统能达到<strong>最终一致性</strong>即可，考虑到客户体验，这个最终一致的时间窗口，要尽可能的对用户透明，也就是需要保障&ldquo;用户感知到的一致性&rdquo;。通常是通过数据的多份异步复制来实现系统的高可用和数据的最终一致性的，&ldquo;用户感知到的一致性&rdquo;的时间窗口则取决于数据复制到一致状态的时间。</p>
<p><strong>最终一致性(eventually consistent)</strong></p>
<p>对于一致性，可以分为从客户端和服务端两个不同的视角。从客户端来看，一致性主要指的是多并发访问时更新过的数据如何获取的问题。从服务端来看，则是更新如何复制分布到整个系统，以保证数据最终一致。一致性是因为有并发读写才有的问题，因此在理解一致性的问题时，一定要注意结合考虑并发读写的场景。</p>
<p>从客户端角度，多进程并发访问时，更新过的数据在不同进程如何获取的不同策略，决定了不同的一致性。对于关系型数据库，要求更新过的数据能被后续的访问都能看到，这是<strong>强一致性</strong>。如果能容忍后续的部分或者全部访问不到，则是<strong>弱一致性</strong>。如果经过一段时间后要求能访问到更新后的数据，则是最终一致性。</p>
<p>最终一致性根据更新数据后各进程访问到数据的时间和方式的不同，又可以区分为：</p>
<blockquote>
<ul>
<li><strong>因果一致性</strong>。如果进程A通知进程B它已更新了一个数据项，那么进程B的后续访问将返回更新后的值，且一次写入将保证取代前一次写入。与进程A无因果关系的进程C的访问遵守一般的最终一致性规则。</li>
<li><strong>&ldquo;读己之所写（read-your-writes）&rdquo;一致性</strong>。当进程A自己更新一个数据项之后，它总是访问到更新过的值，绝不会看到旧值。这是因果一致性模型的一个特例。</li>
<li><strong>会话（Session）一致性</strong>。这是上一个模型的实用版本，它把访问存储系统的进程放到会话的上下文中。只要会话还存在，系统就保证&ldquo;读己之所写&rdquo;一致性。如果由于某些失败情形令会话终止，就要建立新的会话，而且系统的保证不会延续到新的会话。</li>
<li><strong>单调（Monotonic）读一致性</strong>。如果进程已经看到过数据对象的某个值，那么任何后续访问都不会返回在那个值之前的值。</li>
<li><strong>单调写一致性</strong>。系统保证来自同一个进程的写操作顺序执行。要是系统不能保证这种程度的一致性，就非常难以编程了。</li>
</ul>
</blockquote>
<p>上述最终一致性的不同方式可以进行组合，例如单调读一致性和读己之所写一致性就可以组合实现。并且从实践的角度来看，这两者的组合，读取自己更新的数据，和一旦读取到最新的版本不会再读取旧版本，对于此架构上的程序开发来说，会少很多额外的烦恼。</p>
<p>从服务端角度，如何尽快将更新后的数据分布到整个系统，降低达到最终一致性的时间窗口，是提高系统的可用度和用户体验非常重要的方面。对于分布式数据系统：</p>
<ul>
<li>N &mdash; 数据复制的份数</li>
<li>W &mdash; 更新数据是需要保证写完成的节点数</li>
<li>R &mdash; 读取数据的时候需要读取的节点数</li>
</ul>
<p>如果W+R&gt;N，写的节点和读的节点重叠，则是强一致性。例如对于典型的一主一备同步复制的关系型数据库，N=2,W=2,R=1，则不管读的是主库还是备库的数据，都是一致的。</p>
<p>如果W+R&lt;=N，则是弱一致性。例如对于一主一备异步复制的关系型数据库，N=2,W=1,R=1，则如果读的是备库，就可能无法读取主库已经更新过的数据，所以是弱一致性。</p>
<p>对于分布式系统，为了保证高可用性，一般设置N&gt;=3。不同的N,W,R组合，是在可用性和一致性之间取一个平衡，以适应不同的应用场景。</p>
<ul>
<li>如果N=W,R=1，任何一个写节点失效，都会导致写失败，因此可用性会降低，但是由于数据分布的N个节点是同步写入的，因此可以保证强一致性。</li>
<li>如果N=R,W=1，只需要一个节点写入成功即可，写性能和可用性都比较高。但是读取其他节点的进程可能不能获取更新后的数据，因此是弱一致性。这种情况下，如果W&lt;(N+1)/2，并且写入的节点不重叠的话，则会存在写冲突</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://heysql.com/mysql/cap%e5%8e%9f%e7%90%86%e4%b8%8e%e6%9c%80%e7%bb%88%e4%b8%80%e8%87%b4%e6%80%a7%e8%bd%ac%e8%bd%bd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>由concurrent_insert参数想到的，MyISAM和InnoDB的插入性能和InnoDB的行锁定</title>
		<link>http://heysql.com/mysql/%e7%94%b1concurrent_insert%e5%8f%82%e6%95%b0%e6%83%b3%e5%88%b0%e7%9a%84%ef%bc%8cmyisam%e5%92%8cinnodb%e7%9a%84%e6%8f%92%e5%85%a5%e6%80%a7%e8%83%bd%e5%92%8cinnodb%e7%9a%84%e8%a1%8c%e9%94%81%e5%ae%9a/</link>
		<comments>http://heysql.com/mysql/%e7%94%b1concurrent_insert%e5%8f%82%e6%95%b0%e6%83%b3%e5%88%b0%e7%9a%84%ef%bc%8cmyisam%e5%92%8cinnodb%e7%9a%84%e6%8f%92%e5%85%a5%e6%80%a7%e8%83%bd%e5%92%8cinnodb%e7%9a%84%e8%a1%8c%e9%94%81%e5%ae%9a/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 09:37:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[concurrent_insert]]></category>
		<category><![CDATA[插入性能]]></category>
		<category><![CDATA[行锁定]]></category>

		<guid isPermaLink="false">http://www.heysql.com/mysql/%e7%94%b1concurrent_insert%e5%8f%82%e6%95%b0%e6%83%b3%e5%88%b0%e7%9a%84%ef%bc%8cmyisam%e5%92%8cinnodb%e7%9a%84%e6%8f%92%e5%85%a5%e6%80%a7%e8%83%bd%e5%92%8cinnodb%e7%9a%84%e8%a1%8c%e9%94%81%e5%ae%9a/</guid>
		<description><![CDATA[&#160;&#160;&#160; 今天看到concurrent_insert这个参数，解释一下：
&#160;

&#160;&#160;&#160; MyISAM存储引擎有一个系统变量concurrent_insert，专门用以控制其并发插入的行为，其值分别可以为0、1或2。
&#160;&#160;&#160; 当 concurrent_insert设置为0时，不允许并发插入。
&#160;&#160;&#160; 当concurrent_insert设置为1时，如果MyISAM表中没有空洞（即表的中间没有被删除的行），MyISAM允许在一个进程读表的同时，另一个进程从表尾插入记录。这也是MySQL的默认设置。如果有空洞的话虽然不能很好的并发，但是MySQL还是可以使用INSERT DELAYED来提升插入性能(仅适用于MyISAM,MEMORY和ARCHIVE引擎)。
&#160;&#160;&#160; 当 concurrent_insert设置为2时，无论MyISAM表中有没有空洞，都允许在表尾并发插入记录，这时MySQL允许INSERT和SELECT语句在中间没有空数据块的MyISAM表中并行运行。
&#160;&#160;&#160; 注：holes&#8211; 空洞这个概念是myisam引擎特有的,myisam在存储时数据文件是顺序的,当有删除操作时,会发生数据文件的空洞.
当有新数据插入时,先查看空洞空间能否能够插入这条数据(concurrent_insert为2时不用判断),否则插入到末端，此设置只对myisam引擎有效,innodb存储方式有自己独有的方法,不会产生数据空洞。
&#160;&#160;&#160; 那么InnoDB呢，它能不能做到INSERT和SELECT并发呢？这里有个情况说明一下，当这个InnoDB表有索引时当然可以并发(行级锁，只要不连累到，因为因为InnoDB行锁的实现是在索引项上加锁实现的，不同于Oracle的在数据块对行进行加锁，而语句写得不好连累到不相关的行都会被锁定。)，但是没有呢？
&#160;&#160;&#160; 先建立一个测试表CurrentTable(注意没有索引)：

&#160;&#160;&#160; 然后插入999条数据。
&#160;&#160;&#160; 接着显式开始事务1：执行插入操作

另一个终端上对该表进行select是可以的，这个可以理解，因为只是S锁。

但是另一个终端上进行select &#8230; for update的话就出现hanging了。

hanging
从上面的例子也能很清楚的理解(InnoDB行锁的实现是在索引项上加锁实现的)这句话。
而同样的表，我创建了基于ID的主键聚集索引以后，同样的场景，select &#8230; for update是可以顺利执行的。
而当该表使用的是MyISAM引擎时，不但select可以执行，select &#8230; for update也可以(在数据文件层面实现了新插入行和更改现有行的隔离并发执行)。
&#160;
&#160;&#160;&#160; 从上面的一些只言片语中应该能感觉到是不是插入性能上MyISAM比InnoDB强呢，虽然这里是讨论的insert和select并发及锁定的机制问题。
&#160;&#160;&#160; 确实，MyISAM的插入性能优于InnoDB，具体参见这篇realzyy的博文。
]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp; 今天看到<span>concurrent_insert这个参数，解释一下：</span></p>
<p><p>&nbsp;</p>
</p>
<p style="text-indent: -21pt; margin: 5pt 0cm 0pt 21pt">&nbsp;&nbsp;&nbsp; MyISAM存储引擎有一个系统变量concurrent_insert，专门用以控制其并发插入的行为，其值分别可以为0、1或2。</p>
<p style="text-indent: -21pt; margin: 5pt 0cm 0pt 21pt">&nbsp;&nbsp;&nbsp; 当 concurrent_insert设置为0时，不允许并发插入。</p>
<p style="text-indent: -21pt; margin: 5pt 0cm 0pt 21pt">&nbsp;&nbsp;&nbsp; 当concurrent_insert设置为1时，如果MyISAM表中没有空洞（即表的中间没有被删除的行），MyISAM允许在一个进程读表的同时，另一个进程从表尾插入记录。这也是MySQL的默认设置。如果有空洞的话虽然不能很好的并发，但是MySQL还是可以使用<font color="#ff0000"><a href="http://dev.mysql.com/doc/refman/5.1/en/insert-delayed.html">INSERT DELAYED</a></font>来提升插入性能(仅适用于MyISAM,MEMORY和ARCHIVE引擎)。</p>
<p style="text-indent: -21pt; margin: 5pt 0cm 0pt 21pt">&nbsp;&nbsp;&nbsp; 当 concurrent_insert设置为2时，无论MyISAM表中有没有空洞，都允许在表尾并发插入记录，<font color="#ff0000">这时</font><font color="#ff0000"><span>MySQL</span>允许<span>INSERT</span>和<span>SELECT</span>语句在中间没有空数据块的<span>MyISAM</span>表中并行运行。</font></p>
<p style="text-indent: -21pt; margin: 5pt 0cm 0pt 21pt"><font color="#ff0000">&nbsp;&nbsp;&nbsp; </font><font color="#0000ff">注：holes&ndash; 空洞这个概念是myisam引擎特有的,myisam在存储时数据文件是顺序的,当有删除操作时,会发生数据文件的空洞.<br />
当有新数据插入时,先查看空洞空间能否能够插入这条数据(concurrent_insert为2时不用判断),否则插入到末端，</font><font color="#0000ff">此设置只对myisam引擎有效,innodb存储方式有自己独有的方法,不会产生数据空洞。</font></p>
<p style="text-indent: -21pt; margin: 5pt 0cm 0pt 21pt"><font color="#000000">&nbsp;&nbsp;&nbsp; 那么InnoDB呢，它能不能做到INSERT和SELECT并发呢？这里有个情况说明一下，当这个InnoDB表有索引时当然可以并发(<font color="#ff0000">行级锁，只要不连累到，因为因为InnoDB行锁的实现是在索引项上加锁实现的，不同于Oracle的在数据块对行进行加锁，而语句写得不好连累到不相关的行都会被锁定</font>。)，但是没有呢？</font></p>
<p style="text-indent: -21pt; margin: 5pt 0cm 0pt 21pt"><font color="#000000">&nbsp;&nbsp;&nbsp; 先建立一个测试表CurrentTable(<font color="#ff0000">注意没有索引</font>)：</font></p>
<p style="text-indent: -21pt; margin: 5pt 0cm 0pt 21pt"><font color="#000000"><img alt="" src="http://pic.yupoo.com/nosql/28815913e08c/r0lagexp.jpg" /></font></p>
<p style="text-indent: -21pt; margin: 5pt 0cm 0pt 21pt"><font color="#000000">&nbsp;&nbsp;&nbsp; 然后插入999条数据。</font></p>
<p style="text-indent: -21pt; margin: 5pt 0cm 0pt 21pt"><font color="#000000">&nbsp;&nbsp;&nbsp; 接着显式开始事务1：执行插入操作</font></p>
<p style="text-indent: -21pt; margin: 5pt 0cm 0pt 21pt"><font color="#000000"><img class="" alt="" src="http://pic.yupoo.com/nosql/65481913e08d/61dyd0v7.jpg" /></font></p>
<p style="text-indent: -21pt; margin: 5pt 0cm 0pt 21pt"><font color="#000000">另一个终端上对该表进行select是可以的，这个可以理解，因为只是S锁。</font></p>
<p style="text-indent: -21pt; margin: 5pt 0cm 0pt 21pt"><font color="#000000"><img class="" alt="" src="http://pic.yupoo.com/nosql/93623913e72a/bbkhw5n2.jpg" /></font></p>
<p style="text-indent: -21pt; margin: 5pt 0cm 0pt 21pt"><font color="#000000">但是另一个终端上进行select &#8230; for update的话就出现hanging了。</font></p>
<p style="text-indent: -21pt; margin: 5pt 0cm 0pt 21pt"><font color="#000000"><img class="" alt="" src="http://pic.yupoo.com/nosql/93781913e08d/ujrjccdc.jpg" /></font></p>
<p style="text-indent: -21pt; margin: 5pt 0cm 0pt 21pt"><font color="#ff0000">hanging</font></p>
<p style="text-indent: -21pt; margin: 5pt 0cm 0pt 21pt"><font color="#ff0000">从上面的例子也能很清楚的理解(InnoDB行锁的实现是在索引项上加锁实现的)这句话。</font></p>
<p style="text-indent: -21pt; margin: 5pt 0cm 0pt 21pt"><font color="#ff0000">而同样的表，我创建了基于ID的主键聚集索引以后，同样的场景，select &#8230; for update是可以顺利执行的。</font></p>
<p style="text-indent: -21pt; margin: 5pt 0cm 0pt 21pt">而当该表使用的是MyISAM引擎时，不但select可以执行，select &#8230; for update也可以(<font color="#0000ff">在数据文件层面实现了新插入行和更改现有行的隔离并发执行</font>)。</p>
<p style="text-indent: -21pt; margin: 5pt 0cm 0pt 21pt">&nbsp;</p>
<p style="text-indent: -21pt; margin: 5pt 0cm 0pt 21pt">&nbsp;&nbsp;&nbsp; 从上面的一些只言片语中应该能感觉到是不是插入性能上MyISAM比InnoDB强呢，虽然这里是讨论的insert和select并发及锁定的机制问题。</p>
<p style="text-indent: -21pt; margin: 5pt 0cm 0pt 21pt">&nbsp;&nbsp;&nbsp; 确实，MyISAM的插入性能优于InnoDB，具体参见这篇realzyy的<a href="http://www.realzyy.com/?p=20">博文</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://heysql.com/mysql/%e7%94%b1concurrent_insert%e5%8f%82%e6%95%b0%e6%83%b3%e5%88%b0%e7%9a%84%ef%bc%8cmyisam%e5%92%8cinnodb%e7%9a%84%e6%8f%92%e5%85%a5%e6%80%a7%e8%83%bd%e5%92%8cinnodb%e7%9a%84%e8%a1%8c%e9%94%81%e5%ae%9a/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

