May 10, 2012
时间即财富:创业者浪费精力的八个错误
"导读:本文作者Jeff Miller是美食网页应用Punchfork的创始人,同时也是DuckDuckGo、Ginzametrics、Art.sy、DataMinr以及Forkly的投资人。作者通过对自己创业初期一些错误选择进行盘点,告诉读者在创业初期应该学会选择,因为在创业初期,时间是最宝贵的财富。\n创业的选择有两种,一是白手起家做创新品牌,另外就是已经有发展基础的品牌去做大,这两者之间最大的不同就是把握时机。每天都会有成百上千的机会摆在你的面前,你会选择哪一个?把握住其中的一个机会就意味着你将放弃其它那成百上千的诱惑。所以,创业最关键的技能就是把握时机。\n作为一个成熟的企业,在发展的过程中都会面临各种时机,这些时机有的会让公司在付出较少的前提下获得更多利益,有的会促使公司有较大的发展。这些时机会由很多事情决定,比如有足够的活跃用户会向你进行反馈市场信息、发现某个榜样可以让你参考学习、发现了能够促进达成目标的优化方案等等。\n回顾我自己创业的这六个月,发现自己对时机的选择真的是非常糟糕的。我经常在某项工作上花费大量时间,而最后对达成目标却没有任何效果。我特别容易偏爱短期(1至2周时间) …"
May 10, 2012
Mongodb 与mysql 语法比较
"mongodb与mysql命令对比\n传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由**数据库(database)、集合(collection)、文档对象(document)**三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。\nMySQL\nMongoDB\n说明\nmysqld\nmongod\n服务器守护进程\nmysql\nmongo\n客户端工具\nmysqldump\nmongodump\n逻辑备份工具\nmysql\nmongorestore\n逻辑恢复工具\ndb.repairDatabase()\n修复数据库\nmysqldump\nmongoexport\n数据导出工具\nsource\nmongoimport\n数据导入工具\ngrant * privileges on . to …\nDb.addUser()\nDb.auth()\n新建用户并权限\nshow databases\nshow dbs\n显示库列表\nShow tables\nShow collections …"
May 10, 2012
MongoDB数据库优化:Mongo Database Profiler
"在MySQL中,慢查询日志是经常作为我们优化数据库的依据,那在MongoDB中是否有类似的功能呢?答案是肯定的,那就是Mongo Database Profiler.不仅有,而且还有一些比MySQL的Slow Query Log更详细的信息。它就是我们这篇文章的主题。\n** 开启 Profiling 功能**\n有两种方式可以控制 Profiling 的开关和级别,第一种是直接在启动参数里直接进行设置。\n启动MongoDB时加上–profile=级别 即可。\n也可以在客户端调用db.setProfilingLevel(级别) 命令来实时配置。可以通过db.getProfilingLevel()命令来获取当前的Profile级别。 \u0026gt; db.setProfilingLevel(2);\n{“was” : 0 , “ok” : 1}\ndb.getProfilingLevel() 上面斜体的级别可以取0,1,2 三个值,他们表示的意义如下:\n0 – 不开启\n1 – 记录慢命令 (默认为\u0026gt;100ms)\n2 – 记录所有命令\nProfile 记录在级别1时会记录慢命令,那么这个慢的定义是 …"
May 8, 2012
优化MySQL语句的十个建议
"(译者注:作者借这个题目反讽另一篇同名的文章)\nJaslabs的Justin Silverton列出了十条有关优化MySQL查询的语句,我不得不对此发表言论,因为这个清单非常非常糟糕。另外一个Mike也同样意识到了。所以在这个博客中,我要做两件事情,第一,指出为什么这个清单很糟糕,第二,列出我的清单,希望我的比较好些。继续看吧,无畏的读者们!\n为什么那个清单很糟糕\n1.他的力气没使对地方\n我们要遵循的一个准则就是如果你要优化代码时,应该先找出瓶颈在哪。然而Silverton先生的力气没有用对地方。我认为60%的优化是基于清楚理解SQL和数据库基础的。你需要知道join和子查询的区别,列索引,以及如何将数据规范化等等。另外的35%的优化是需要清楚数据库选择时的性能表现,例如COUNT(*)可能很快也可能很慢,要看你选用什么数据库引擎。还有一些其他要考虑的因素,例如数据库在什么时候不用缓存,什么时候存在硬盘上而不存在内存中,什么时候数据库创建临时表等等。剩下的5%就很少会有人碰到了,但Silverton先生恰好在这上面花了大量的时间。我从来就没用过SQL_SAMLL_RESULT。\n2.很 …"
May 8, 2012
Mysql中出现的"MySQL Got error 139 from storage engine"的原因
"今天再从excel里导入数据到Mysql中的时候,发现一个表里的数据总是导入失败.后来经过查找是用的INNODB表引擎的问题.而换成MYISAM表引擎的话,则不存在此问题.并试图先导入成Myisam表,然后手动修改表引擎为INNODB.结果提示"MySQL Got error 139 from storage engine"错误.经google一番发现.是由于INNODB单条记录有8K的限制,而导入的excel表里字段不到20个.内容特别的多的.\n官方解释如下:\nSolution:\n1.divide your table into small ones. If one table contain more than 10 text colums, and the data contain is a little bit long. this error will be thrown out.\n2.modify InnoDB to MyISAM.Problem description:\nDescription: Since upgrading MySQL from version …"
May 7, 2012
Mongodb亿级数据量的性能测试
"进行了一下Mongodb亿级数据量的性能测试,分别测试如下几个项目:\n(所有插入都是单线程进行,所有读取都是多线程进行)\n1) 普通插入性能 (插入的数据每条大约在1KB左右)\n2) 批量插入性能 (使用的是官方C#客户端的InsertBatch),这个测的是批量插入性能能有多少提高\n3) 安全插入功能 (确保插入成功,使用的是SafeMode.True开关),这个测的是安全插入性能会差多少\n4) 查询一个索引后的数字列,返回10条记录(也就是10KB)的性能,这个测的是索引查询的性能\n5) 查询两个索引后的数字列,返回10条记录(每条记录只返回20字节左右的2个小字段)的性能,这个测的是返回小数据量以及多一个查询条件对性能的影响\n6) 查询一个索引后的数字列,按照另一个索引的日期字段排序(索引建立的时候是倒序,排序也是倒序),并且Skip100条记录后返回10条记录的性能,这个测的是Skip和Order对性能的影响\n7) 查询100条记录(也就是100KB)的性能(没有排序,没有条件),这个测的是大数据量的查询结果对性能的影响\n8) 统计随着测试的进行,总磁盘占用,索引磁盘占用以及数 …"
May 7, 2012
mongodb索引讲解与性能调优
"mongodb索引规则基本上与传统的关系库一样,大部分优化MySQL/Oracle/SQLite索引的技巧也适用于mongodb。\n一、 为什么用索引:\n当查询中用到某些条件时,可以对该键建立索引,以提高查询速度。\n如果数据量很多且查询多于更新时,可以用索引提高查询的速度。\n二、 索引管理:\na) 查询索引:\n查询已有索引的明细: 查询索引很简单,比如说需要查询mailaccess数据库中的Mail collection上的索引时:\nmongo 进入mongo\nMongoDB shell version: 1.8.1\nconnecting to: test\nuse mailaccess 进入mailaccess database\nswitched to db mailaccess\ndb.Mail.getIndexes() 查询索引明细\n[\n{\n“name” : “_id_”,\n“ns” : “mailaccess.Mail”,\n“key” : {\n“_id” : 1\n},\n“v” : 0\n},\n{\n“_id” : …"
May 7, 2012
MongoDB 索引数据类型优化,节省60%内存
"最近trunk.ly的工程师通过mongostat发现了大量的page fault,然后通过检查发现,他们的索引已经超出内存限制了(没有keep all index in RAM)。于是他们决定开始减小索引大小,通过测试得出了如下的数据,不同的数据类型的索引大小有2到3倍的差距。\n虽然能够想像得到,但是直观的数据图可能让我们更深刻的认识到。他们的测试再一次告诉我们:给索引定一个好的数据结构是多么重要。\n这是测试结果图,分别是用int、MongoDB的ObjectID、base64和md5的字符串做索引产生的索引大小:\n测试过程也非常简单,首先用下面脚本将各种不同数据结构的数据写入到不同的collection里:\n#!/usr/bin/env python import pymongo import bson from pymongo import Connection db = connection.test_database print(\u0026#39;ObjectID\u0026#39;) for i in range(1, 1000000): …"
May 7, 2012
mongodb的监控与性能优化
"一.mongodb的监控\nmongostat是mongdb自带的状态检测工具,在命令行下使用。它会间隔固定时间获取mongodb的当前运行状态,并输出。如果你发现数据库突然变慢或者有其他问题的话,你第一手的操作就考虑采用mongostat来查看mongo的状态。\n它的输出有以下几列:\ninserts/s 每秒插入次数 query/s 每秒查询次数 update/s 每秒更新次数 delete/s 每秒删除次数 getmore/s 每秒执行getmore次数 command/s 每秒的命令数,比以上插入、查找、更新、删除的综合还多,还统计了别的命令 flushs/s 每秒执行fsync将数据写入硬盘的次数。 mapped/s 所有的被mmap的数据量,单位是MB, vsize 虚拟内存使用量,单位MB res 物理内存使用量,单位MB faults/s 每秒访问失败数(只有Linux有),数据被交换出物理内存,放到swap。不要超过100,否则就是机器内存太小,造成频繁swap写入。此时要升级内存或者扩展 locked % 被锁的时间百分比,尽量控制在50%以下吧 idx miss % …"
May 7, 2012
Mongdb监控 (MMS)
"MMS (MongoDB Monitoring Service) is a hosted application created by 10gen for monitoring MongoDB deployments. MMS Collects statistics on all key server and hardware indicators and presents this data through an intuitive web interface\n先简单说下原理:\n1、在mms服务器上添加mongodb服务器的ip,端口,user,password. 2、在mongodb服务器所在的内网空闲机器上安装定制的agent脚本。 3、agent脚本从mms获取你的服务器Ip及端口等信息,然后连接到mongodb服务器获取必要的监控数据。 4、agent脚本将监控信息上传到mms服务器,我们登陆后就可以查看到相应的信息了。\n主页地址如下\n1. https://mms.10gen.com/help/install.html\n在Hosts项上点击添加,此处hostname填写内 …"