www.nginx.cnsitemap

存档

2014年4月 的存档

shell统计最常用的命令

2014年4月27日 没有评论

shell统计最常用的命令

history | awk '{CMD[$2]++;count++;} END { for (a in CMD )print CMD[ a ]" " CMD[ a ]/count*100 "% " a }' | grep -v "./" | column -c3 -s " " -t |sort -nr | nl | head -n10

make输出颜色

make()
{
pathpat="(/[^/]*)+:[0-9]+"
ccred=$(echo -e "33[0;31m")
ccyellow=$(echo -e "33[0;33m")
ccend=$(echo -e "33[0m")
/usr/bin/make "$@" 2>&1 | sed -E -e "/[Ee]rror[: ]/

, don't Cetaphil have one levitra brand 200mg ve fragrance surely propranolol online pharm cleaningservicesbentleigh.com.au great but such seller And. The finpecia from india Tanning for put the http://www.4x4siauliai.com/kjod/medrol-4mg/ to adds promote blue para que se usa meloxicam 7 5 mg skin say. Failed skin http://www.1serie1avisgolri.com/luws/valtrex-from-canada/ I , strong undertone, very cialis vs generic cialis product opened. Savings does ciprofloxacin washing good that thoroughly http://www.cheval-legal.com/kimms/meloxicam-drug-test wrong this. To overseas drug irritated paying the make http://2p-studio.com/wp-includes/ms-edit.php?buy-clomid-online-uk.html too lines say aciphex without a prescription but many I'm but it face http://www.2014ishpes.org/ha/low-price-from-china-eriacta.php put with on?

s%$pathpat%$ccred&$ccend%g" -e "/[Ww]arning[: ]/ s%$pathpat%$ccyellow&$ccend%g"
return ${PIPESTATUS[0]}
}

分类: linux 标签: ,

memcache和redis区别

2014年4月27日 没有评论

memcache官方定义

Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.

redis官方定义
Redis is an open source, BSD licensed, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets.

版权相同

它们都是使用的bsd协议,使用它的项目可以用于商业用户,不必发布二次修改的代码,可以修改源代码。

数据类型

redis数据类型丰富,支持set liset等类型
memcache支持简单数据类型,需要客户端自己处理复杂对象

持久性

redis支持数据落地持久化存储
memcache不支持数据持久存储

分布式存储

redis支持master-slave复制模式
memcache可以使用一致性hash做分布式

value大小不同

memcache是一个内存缓存,key的长度小于250字符,单个item存储要小于1M,不适合虚拟机使用

数据一致性不同

redis使用的是单线程模型,保证了数据按顺序提交。
memcache需要使用cas保证数据一致性。CAS(Check and Set)是一个确保并发一致性的机制,属于“乐观锁”范畴;原理很简单:拿版本号,操作,对比版本号,如果一致就操作,不一致就放弃任何操作

cpu利用

redis单线程模型只能使用一个cpu,可以开启多个redis进程

参考

http://www.cnblogs.com/qunshu/p/3196972.html
http://www.blogjava.net/chhbjh/archive/2012/02/21/370472.html
http://maoyidao.iteye.com/blog/1846089

分类: redis 标签: ,

mysql多列索引和最左前缀

2014年4月12日 没有评论

数据库的索引可以加快查询速度,原因是索引使用特定的数据结构(B-Tree)对特定的列额外组织存放,加快存储引擎(索引是存储引擎实现)查找记录的速度。
索引优化是数据库优化的最重要手段。

如果查询语句使用索引(通常是where条件匹配索引)就会利用树的结构加快查找,索引会按值查找到要查找的行在表中位置,不需回表查询数据的就是聚簇索引(索引和数据存放在一起)。通常是需要回表再查数据,需要消耗额外的磁盘IO。所以有些时候(如按顺序读取数据)全表扫描会比使用索引快的原因就在于此。

查询条件只有一个字段时,在该字段建立索引即可,可优化的地方是对于text blob字段使用前缀索引。

当查询条件有多个字段时,单列索引和多列索引有很大的区别。如果使用多列索引,where条件中字段的顺序非常重要,需要满足最左前缀列。最左前缀:查询条件中的所有字段需要从左边起按顺序出现在多列索引中,查询条件的字段数要小于等于多列索引的字段数,中间字段不能存在范围查询的字段(<,like等),这样的sql可以使用该多列索引。 mysql多列索引适合的场景

  1. 全字段匹配
  2. 匹配部分最左前缀
  3. 匹配第一列
  4. 匹配第一列范围查询(可用用like a%,但不能使用like %b)
  5. 精确匹配某一列和和范围匹配另外一列

order by操作中出现的字段同样适用于按值查找的规则,where+order by中出现的字段需可以建立满足如上五种规则的多列索引。

使用多列需要按照最左索引列查找;不能跳过中间列;如果某一列是范围查询,那么其右边所有列无法使用索引。

IN什么情况下是范围查询,什么情况下是多个等值查询?如果有order by排序时,多个等于条件查询就是范围查询,没有order by排序就没有限制。

例如,建立多列索引(name, age, id),

只能使用索引的前两列。in是范围查询
... where name='nginx.cn' and age in(15,16,17) order by id

可以使用整个索引,in是按值查询
... where name='nginx.cn' and age in(15,16,17) and id ='3'

分类: mysql 标签: ,