剛開始寫博客不足之處望你們多多指點,少一些質疑多一些幫助,咱們就能成爲朋友。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.個人第二款產品如今正在這樣作,不信你搜搜看
你能夠試着搜一搜:玩具租賃,就第一頁裏面的內容(除了頭部百度的廣告外)你都點進去要麼是個人產品宣傳官網,要麼是友商的軟文(底下確定有個人產品留言)。