Category: Tools

优化MySQL,还是使用缓存?

今天我想对一个Greenfield项目上可以采用的各种性能优化策略作个对比。换言之,该项目没有之前决策强加给它的各种约束限制,也还没有被优化过。 具体来说,我想比较的两种优化策略是优化MySQL和缓存。提前指出,这些优化是正交的,唯一让你选择其中一者而不是另一者的原因是他们都耗费了资源,即开发时间。 优化MySQL 优化MySQL时,一般会先查看发送给mysql的查询语句,然后运行explain命令。稍加审查后很常见的做法是增加索引或者对模式做一些调整。 优点 1、一个经过优化的查询对于所有使用应用的用户来说都是快速的。因为索引通过对数复杂度的速度来检索数据(又名分制,正如你搜索一个电话簿一样,逐步缩小 搜索范围),而且随着数据量的递增也能维持良好的性能。对一个未经索引化的查询的结果做缓存随着数据的增长有时候则可能会表现得更差。随着数据的增长,那 些未命中缓存的用户可能会得到很糟糕的体验,这样的应用是不可用的。 2、优化MySQL不需要担心缓存失效或者缓存数据过期的问题。 3、优化MySQL可以简化技术架构,在开发环境下复制和工作会更加容易。 缺点 1、有一些查询不能光通过索引得到性能上的改善,可能还需要改变模式,在某些情况下这对于一些应用可能会很麻烦。 2、有些模式的更改可能用于反规范化(数据备份)。尽管对于DBA来说,这是一项常用的技术,它需要所有权以确保所有的地方都是由应用程序更新,或需要安装触发器来保证这种变化。 3、一些优化手段可能是MySQL所特有的。也就是说,如果底层软件被移植到多个数据库上工作,那么很难确保除了增加索引外一些更复杂的优化技术可以通用。 使用缓存 这种优化需要人来分析应用的实际情况,然后将处理代价昂贵的部分从MySQL中剥离出来用第三方缓存替代,比如memcached或Redis。 优点 1、缓存对于一些MySql自身很难优化的查询来说会工作地很好,比如大规模的聚合或者分组的查询。… Read More

css hacks (ie6,ie7,ie8,firefox,Chrome)

IE6能识别下划线”_”和星号” * “,IE7能识别星号” * “,但不能识别下划线”_”, IE8能识别” \9″,但不能识别下划线”_”, 而firefox两个都不能认识,却可以识别‘!important’。等等 书写顺序,一般是将识别能力强的浏览器的CSS写在后面。下面列举常用的CSS hack方法 1:!important !important作用是提高指定样式规则的应用优先权。 IE7以及所有标准浏览器能识别!important 区别IE6与IE7与其他浏览器 .browserTest { border:20px solid… Read More