大数据之数据库mysql优化实战(一)
生活随笔
收集整理的這篇文章主要介紹了
大数据之数据库mysql优化实战(一)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
:facepunch:
大數(shù)據(jù)之?dāng)?shù)據(jù)庫mysql優(yōu)化實(shí)戰(zhàn)(一)
首先你要有數(shù)據(jù),不然怎么測試,幾百條就算了,還沒跑就完了。
- 本章主題如何向數(shù)據(jù)庫插入10萬條數(shù)據(jù)
創(chuàng)建數(shù)據(jù)庫
CREATE TABLE `etcblacklist11` (`ID` int(24) NOT NULL AUTO_INCREMENT,`IssuerID` varchar(16) DEFAULT NULL,`NetNo` varchar(4) DEFAULT NULL,`CARDID` varchar(16) DEFAULT NULL,`ObuID` varchar(16) DEFAULT NULL,`License` varchar(25) DEFAULT NULL,`strID` varchar(2) DEFAULT NULL,`strTmp1` varchar(3) DEFAULT NULL,`strtime1` datetime DEFAULT NULL,`strTmp2` varchar(3) DEFAULT NULL,`strtime2` datetime DEFAULT NULL,`strTmp3` varchar(3) DEFAULT NULL,`strTmp4` varchar(3) DEFAULT NULL,`LicenseName` varchar(4) DEFAULT NULL,`LicenseNameA` varchar(4) DEFAULT NULL,`LicenseNameB` varchar(4) DEFAULT NULL,PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;書寫存儲過程(create procedure procefureName())
CREATE DEFINER=`root`@`localhost` PROCEDURE `test`() BEGIN DECLARE IDs INT(11); DECLARE i INT; DECLARE CARDID VARCHAR(16); DECLARE IssuerID VARCHAR(16); DECLARE ObuID VARCHAR(16); DECLARE License VARCHAR(8); DECLARE strID VARCHAR(4); DECLARE strTmp1 VARCHAR(4); DECLARE strTmp2 VARCHAR(4); DECLARE strTmp3 VARCHAR(4); DECLARE NetNo VARCHAR(4); DECLARE LicenseName VARCHAR(2); DECLARE LicenseNameA VARCHAR(2); DECLARE LicenseNameB VARCHAR(2); SET IDs =11; SET LicenseName = '京'; SET strID = RIGHT(CONCAT('00',IDs),2); SET i=0; set strTmp1 = '1'; SET strTmp1 = CONCAT(strID,'1'); SET strTmp2 = CONCAT(strID,'2'); SET strTmp3 = CONCAT(strID,'3'); SET NetNo = CONCAT(strID,'01'); SET LicenseNameA = CONCAT(LicenseName,'A'); SET LicenseNameB= CONCAT(LicenseName,'B'); WHILE i<24315 DO SET CARDID = CONCAT(strTmp1,RIGHT(CONCAT('0000000000000',cast(i as char(16))),13)); SET IssuerID = CONCAT(strTmp2,RIGHT(CONCAT('0000000000000',cast(i as char(16))),13)); SET ObuID = CONCAT(strTmp3,RIGHT(CONCAT('0000000000000',cast(i as char(16))),13)); SET License = CONCAT(LicenseNameA,RIGHT(CONCAT('00000',cast(i as char(16))),5)); #SET CARDID = CONCAT('0847',cast(i as char(12))); INSERT INTO `ETCBlackList11`(IssuerID, NetNo, CARDID, ObuID, License,strID,strTmp1,strtime1,strTmp2,strtime2,strTmp3,strTmp4,LicenseName,LicenseNameA,LicenseNameB) VALUES (IssuerID, NetNo, CARDID, ObuID, License, '0', '0', '2000-01-01 00:00:00', '1', '2000-01-01 00:00:00', '測試', '16019', '0', '0', '0'); SET i = i + 1; END WHILE; END存儲過程的優(yōu)點(diǎn)
- 可編寫邏輯比較復(fù)雜的數(shù)據(jù)庫操作語句,并具有可重用性
- 存儲過程是已經(jīng)預(yù)編后的sql語句,速度更快
- 減輕網(wǎng)絡(luò)的負(fù)載,客戶計(jì)算機(jī)上調(diào)用該存儲過程時(shí),網(wǎng)絡(luò)中傳送的只是該調(diào)用語句
- 存儲過程可被作為一種安全機(jī)制來充分利用
創(chuàng)建數(shù)據(jù)庫注意事項(xiàng)
- 盡量保證字段的存儲大小,不要設(shè)置的太大,帶來內(nèi)存消耗
- 存儲過程的變量名的大小也是如此
插入10W條數(shù)據(jù)分析
1: 總?cè)萘?3.5M ,插入1W條數(shù)據(jù) 300s(隨著表數(shù)據(jù)量越大花費(fèi)時(shí)間越長), 每條數(shù)據(jù)占1.7kb.
若有興趣,加群交流:181666459
轉(zhuǎn)載于:https://my.oschina.net/budaoniu/blog/647361
總結(jié)
以上是生活随笔為你收集整理的大数据之数据库mysql优化实战(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 行业专业的移动广告聚合平台--KeyMo
- 下一篇: tortoisesvn › prefer