刚开始写博客不足之处望你们多多指点,少一些质疑多一些帮助,咱们就能成为朋友。html
上一篇:《.NET程序员我是如何经过一个产品在2年内买车买房》有不少同为程序员的小伙伴们给我留言,从总体的留言中我能看到有不少迷茫的小伙伴活在上班拿工资的夹缝中,首先能挣到外快当然是好,如没有挣到仍是努力把本身的事作好,成功并不是都是瓜熟蒂落而是偶然,能经过从事技术这份工做抓住机会才是你职场中应该学的,好比:你的每一任老板都是一个商机,他是怎么作的你也能够这样作,为何不能,应该是执行力不够,上一篇我也讲到过我经过自媒体平台连续天天发文长达2-3个月,其中这个过程就是一个漫长而又头疼的事,首先天天的文章该怎么写就单单这一件事都足以让你放弃100次。mysql
本文大纲:程序员
1.我热衷技术但我更倾向于技术变现sql
要想技术变现就必须广而告之,你作的再好没人知道,卖不出去也是一堆废代码,由于没有价值(钱),这里并不是否定技术没价值,而是要让技术变的更有价值,让本身更有动力去学习技术,而后经过技术变现,经过技术在遇到实际状况的时候去解决,让问题去驱动学习,而不是学而不用,最后沦落成为纸上谈兵。数据库
如下是我在解决投票系统慢、卡上面关于数据库的一些优化,有可能你并无遇到过该问题,可是我遇到了而且总结成经验告诉你,这就叫经验分享,我把他整理成测试案例使你更能看明白。api
一:引擎的选择学习
insert into `user`(phone,`name`,headimg,sex,addtime) select phone,`name`,headimg,sex,now() from `user`
以上sql语句是快速复制插入表数据,意思是从user表中查询数据并插入到user表中(也能够是另一张表如user2)。如数据表中起始只有1条数据的话,那么执行17次13万多数据、19次52多万数据、20次100多万数据、21次200多万数据、22次400多万数据,每执行一次就在上一次基础上翻倍。以上sql语句是最简单不过的一条语句,不用写(来给本身增长能让你放弃创造问题环境难度的语句)什么循环之类的语句,你只用按鼠标左键执行个10几回便可。测试
select substring(MD5(RAND()),1,20);#随机生成20位字符串 select CEIL(RAND()*100000000000);#随机生成最多11位数字
1.使用count(*)方式查询差距对比
#引擎是:InnoDB select count(*) from `user3`; 平均查询时间:1.6秒 ~ 1.8秒 #引擎是:MyISAM select count(*) from `user`; 平均查询时间:0.000秒 ~ 0.001秒
2.使用count(*) 和 count(id)方式查询差距对比
#引擎是:InnoDB select COUNT(*) from `user3`; select COUNT(id) from `user3`; #其中count(*)的方式要快于count(id)差很少0.1秒 ~ 0.5秒 #引擎是:MyISAM select COUNT(*) from `user`; select COUNT(id) from `user`; #其中count(*)和count(id)差距在0.000秒 ~ 0.001秒
3.使用like方式查询差距对比
#引擎是:InnoDB select * from `user3` WHERE `name` like 'b981%'; #平均查询时间:2.8秒 ~ 3.068秒 #引擎是:MyISAM select * from `user` WHERE `name` like 'b981%'; #平均查询时间:0.959秒
4.使用带分页方式查询差距对比
#引擎是:InnoDB select * from `user3` WHERE `name` like 'b981%' limit 1,10; #平均查询时间:0.5秒 #引擎是:MyISAM select * from `user` WHERE `name` like 'b981%' limit 1,10; #平均查询时间:0.1秒
如下是InnoDB和MyISAM引擎的使用场景说明大数据
InnoDB存储(默认引擎):对事务要求高,保存的数据都是重要数据,能够考虑使用InnoDB引擎,好比订单表,帐号表优化
二:数据表分区
知识点说明:投票系统使用的HASH方式进行分区的,使用HASH方式好处:当插入数据时,根据id把数据平均散到各个分区上,因为文件小,效率高,更新操做变得更快。
其余更多的分区能够查看http://tool.oschina.net/uploads/apidocs/mysql-5.1-zh/partitioning.html#partitioning-types
1.建立带有分区的表,最后一句代码就是建立HASH分区:PARTITION BY HASH (id) PARTITIONS 10
CREATE TABLE `user4` ( `id` int(11) NOT NULL AUTO_INCREMENT, `phone` varchar(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 PARTITION BY HASH (id) PARTITIONS 10;
重点:要使用分区表必需要在建立表的时候就设置好
问题:可是表最开始没有建立分区该怎么办?第一步:将表结构代码导出,在最后加上分区代码PARTITION BY HASH (id) PARTITIONS 10,建立一个新临时表。第二步:使用查询并插入的语句进行同步数据到新表,同步完成将临时表表名改为正式表名,将原来表删除或者换一个新名字。当你在插入数据的时候就自动给你进行了分区。分区表创建好以后下面咱们就进行查询分析对比。
将数据同步到分区表(user4)
insert into `user4`(phone,`name`,headimg,sex,addtime) select phone,`name`,headimg,sex,now() from `user`
#执行插入时间只有12.526秒,若是未分区插入须要30多秒
1.使用count(*)方式查询差距对比,加了HASH分区直接秒杀前二者
#引擎是:InnoDB select count(*) from `user3`; #平均查询时间:1.6秒 ~ 1.8秒 #引擎是:MyISAM select count(*) from `user`; #平均查询时间:0.000秒 ~ 0.001秒 #引擎是:MyISAM+HASH分区 select COUNT(*) from `user4` #平均查询时间:0.000秒
2.使用count(*) 和 count(id)方式查询差距对比,加了HASH分区直接秒杀前二者
#引擎是:MyISAM+HASH分区 select COUNT(*) from `user4`; select COUNT(id) from `user4`; #平均查询时间:0.000秒
3.使用like方式查询差距对比,没有加HASH分区的表要快加了HASH分区表那么一丢丢,你知道为何吗,留言回复?
#引擎是:MyISAM select * from `user` WHERE `name` like 'b981%'; #平均查询时间:0.827秒 #引擎是:MyISAM+HASH分区 select * from `user4` WHERE `name` like 'b981%'; #平均查询时间:0.976秒
以上两个知识点解决了投票系统很大一部分慢卡的问题,其实也没有什么高大上,仍是那一句话:适合本身的才是最好的。当系统更流畅客户用的更顺心你向他要点钱都是分分钟的事。
2.代码能够copy发现商机的方式也能够copy
首先你要弄清楚你所作的产品卖点在哪里?如何找到卖点(商机)?
方式一:我是经过作定制开发,找我开发同一个产品的人多,就表明这个事有价值。
方式二:你所任职的公司在作什么事,大家公司所作的这款产品就是卖点(这里不说大厂如BAT),把公司这款产品翻版一份min版本调整价格,经过在网上发软文(你彻底能够去网上找,上一篇文章也说过怎么找),起码至少2-3个月的软文努力才有效果,若是没有这个毅力那么最开始就不要想着去翻版。
方式三:例如:微擎的应用商店、猪八戒的排名前几的服务商点进去看他们什么产品卖的好,这些都是商机,挑选一个在你能力范围内的产品进行翻版。
3.具体执行细节
4.个人第二款产品如今正在这样作,不信你搜搜看
你能够试着搜一搜:玩具租赁,就第一页里面的内容(除了头部百度的广告外)你都点进去要么是个人产品宣传官网,要么是友商的软文(底下确定有个人产品留言)。