摘要: 1. Redis 简介•Redis是一款开源的、高性能的键-值存储(key-value store)。它常被称作是一款数据结构服务器(data structure server)。Redis的键值可以包括字符串(strings)类型,同时它还包括哈希(hashes)、列表(lists)、集合(sets)和 有序集合(sorted sets)等数据类型。 对于这些数据类型,你可以执行原子操作。例如:对字符串进行附加操作(append);递增哈希中的值;向列表中增加元素;计算集合的交集、并集与差集等。•为了获得优异的性能,Redis采用了内存中(in-memory)数据集(dataset)的方式。 阅读全文
posted @ 2013-08-03 12:08 visionwang 阅读(30567) 评论(0) 推荐(0) 编辑
摘要: 默认的memcached客户端对非ANSI的key存取时会有问题,有2种方式解决:1 在get和set前将缓存的key进行UrlEncode2 修改memcached.config文件 增加加粗字体部分,客户端在get,和set钱,如果不指定keyTransformer,会把你的key字符串用Ansi Encode传递给memcached服务器,这时中文处理会有问题,如果指定了keyTransformer,如:SHA1KeyTransformer,就先计算一个sha1唯一值作为key,传递给memcached服务器,这样就可以避免中文Key的问题了。 阅读全文
posted @ 2013-07-01 23:18 visionwang 阅读(662) 评论(0) 推荐(0) 编辑
摘要: 先找出执行频率最高的sql,然后找出量比较大的表,然后把就是结合查询计划去实现这些语句的索引覆盖,还是sqlserver强大,查询计划是图形化的,mysql得explan有些弱呀。1.作为where、join字段在生产环境下的使用频率,注意索引在哪些情况下不被使用 2.大数据表要做到CURD性能综合平衡:充分考虑索引对CUD的影响 3.OLTP和OLAP:用时间和空间来减少即需查询 4.需要使用唯一索引来保证数据的业务约束。5.原则索引应尽量使用数值字段 6.聚集索引和非聚集索引:最频字段或主键。7. 索引无法解决的问题要通过OLAP、(分布式)缓存等解决。索引对硬盘的伤害,即索引会增加写硬盘 阅读全文
posted @ 2013-05-24 21:05 visionwang 阅读(198) 评论(0) 推荐(0) 编辑
摘要: http://nathanyhm.github.io/gitblog/2013/05/17/facebook-note-all.html 阅读全文
posted @ 2013-05-19 11:31 visionwang 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 进程可使用内存数就是操作系统给进程分配的最大地址,一般的32位操作系统提供给用户地址最大都是3g(操作系统自己保留1g),windows由于商业目的,对于个人用户只提供了2g地址,要使用3g扩展需要对系统配置作修改。还有就是intel的32位芯片实际上是支持36位寻址能力的(64g),但是也是出于商业目的对于大部分个人芯片都禁止了这个功能,这个禁止可能是物理上的限制个人用户几乎无法修改。而且在操作系统中物理可用内存和进程实际占用内存是有区别的,因为有虚拟地址和交换区这种概念,进程实际使用的内存量远远大于物理可用内存,最简单的一个例子就是声明一个非常大的数组但不存放任何东西,进程启动后占用的物理 阅读全文
posted @ 2013-04-24 23:08 visionwang 阅读(7737) 评论(0) 推荐(4) 编辑
摘要: 根据以往经验和网友的总结纵向扩展硬件方面可以更换更强劲的服务器,增加 CPU ,内存, 使用高速磁盘。软件方面可以对现有代码的优化,重构。使用 Non-Blocking 非阻塞 IO 模式,或者异步 IO 模式,使用线程模式或者改用 事件驱动形模式。目标是提高单机 qps ,连接数,来支持更多的连接,更多的用户,更多的业务量。横向扩展使用集群,更多的服务器代替单一服务器。可扩展系统设计模式负载均衡这种模式将请求分发到并行的处理机上。要求程序无状态,请求对于每个处理机都应该是相同的。比如常见的 REST 模式既是无状态模式。分散聚集模式这种模式将请求分发到多个处理机上,然后收集每个处理机返回的结 阅读全文
posted @ 2013-04-09 22:17 visionwang 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 尽管你可以调节很多MySQL服务器上的变量,但是在大多数通常的工作负载下,只有少数几个才真正重要。如果你把这些变量设置正确了,那么修改其他变量最多只能对系统性能改善有一定提升。1. key_buffer_size – 这对MyISAM表来说非常重要。如果只是使用MyISAM表,可以把它设置为可用内存的 30-40%。合理的值取决于索引大小、数据量以及负载 — 记住,MyISAM表会使用操作系统的缓存来缓存数据,因此需要留出部分内存给它们,很多情况下数据比索引大多了。尽管如此,需要总是检查是否所有的 key_buffer 都被利用了 — .MYI 文件只有 1GB,而 key_buffer 却设 阅读全文
posted @ 2013-04-04 11:02 visionwang 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 使用默认设置配置单个网站在IIS下运行,任务管理器中可以看到w3wp.exe的工作进程在运行。但是,IIS不只可以为单个工作进程运行。可以配置器使用多个进程,每个进程为一个或者多个网站处理请求,或者为同一网站处理请求(web园)。为同一组网站处理请求的一组IIS进程就是应用程序池AppPool,单个apppool可以支撑多个网站。 设置AppPool,Apppool默认情况下设置为每1740分钟(29个小时)回收一次。回收时,apppool中的进程会停止,然后以重叠的方式启动,所以不会有请求的丢失。回收有助于预防因为内存泄漏或者其他的资源泄漏导致的中断,或者因为应用程序的bug造成app... 阅读全文
posted @ 2013-03-30 14:52 visionwang 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 1.请求和处理页面时浏览器遵循的步骤,使用该信息优化HTML以达到更快的加载时间。2.在页面的钱500个左右字节内包换一些请求。3.根据图片对用户的优先级而不是他们在屏幕的位置使用早期和延迟加载。4.为URL和文件使用一致的大小写,避免客户端多次下载同一个文件,即使它们已经缓存。5.将静态文件分配在多个域名内,有助于浏览器并行下载。6.将<script>包含放在HTML后部,或者在它们之前放一个或者多个图片来促进网络并行化。7.在项目中合并脚本文件来减少文件的数量,避免使用document.write()。8.使用页面的onload处理器加载大的,优先级低的图片,或者那些折叠以下的 阅读全文
posted @ 2013-03-29 22:18 visionwang 阅读(169) 评论(0) 推荐(0) 编辑
摘要: rails 中的MVC 和asp.net的请求流程类似,从MVC的视角来仔细的看一下其中某些特定的部分。我们会分析在浏览器中做一次点击的内在过程,这里通过访问用户索引页面做演示,来了解一下 MVC。浏览器向 /users 发起一个请求;Rails 的路由将 /user 分配到 Users 控制器的 index 动作;index 动作向 User 模型获取所有的用户(User.all);User 模型从数据库中将所有的用户读取出来;User 模型将所有的用户返回给控制器;控制器将获得的所有用户数据赋予 @users 变量,然后传递给 index 的视图;视图使用内嵌 Ruby 代码的模板渲染成 阅读全文
posted @ 2013-03-03 10:48 visionwang 阅读(437) 评论(0) 推荐(0) 编辑