mysql進(jìn)階

EQUI JOIN: join、outer join
SEMI JOIN: from a,b

一、索引

//存儲(chǔ)過程至批量數(shù)據(jù)導(dǎo)入
create PROCEDURE bigData_test(IN num int,IN begin_num int)
BEGIN
DECLARE i INT DEFAULT 0;
DECLARE y INT DEFAULT begin_num;
WHILE i < num DO
INSERT INTO bs_user VALUES (y,concat(y,'.jpg'),concat('tangyb',y),concat('tangyb',y),concat('tangyb',y),NULL,NULL,'00');
SET i = i + 1;
SET y = y + 1;
END WHILE;
END

//執(zhí)行存儲(chǔ)函數(shù)
START TRANSACTION;
call bigData_test(100000,1); /*調(diào)用存儲(chǔ)過程(手動(dòng)開啟事務(wù),否則每次insert都會(huì)commit,會(huì)導(dǎo)致執(zhí)行速度慢到令人發(fā)指)
commit;

//新建并查詢索引(自己測試的時(shí)候先新增數(shù)據(jù)在建立索引,否則在添加數(shù)據(jù)的時(shí)候等候時(shí)間太長)
ALTER TABLE bs_user ADD INDEX index_uname (u_name); /給bs_user添加一個(gè)名為index_uname的索引
show index from bs_user; /
查詢bs_user表中的索引

小知識(shí)

show global variables like '%query_cache%'; /查詢query_cache 是否開啟(走索引第一次會(huì)很慢,第二次會(huì)很快)
show variables like '%storage_engine%'; /
表引擎使用innodb.第一次查詢也會(huì)走數(shù)據(jù)文件,第二次直接走buffer_pool,也比直接查詢數(shù)據(jù)文件要快

原理分析:http://blog.jobbole.com/24006/

二、分表、分庫、分區(qū)

在大數(shù)據(jù)的基礎(chǔ)上需要考慮這些數(shù)據(jù)主要是讀還是更新(根據(jù)不同的操作也可以選擇不同特征的數(shù)據(jù)庫,冷熱數(shù)據(jù)分離)
分表:垂直-按照字段(如:文章的內(nèi)容常常用于查詢,訪問量常常更新)
水平-保持表的結(jié)構(gòu)相同,只是把數(shù)據(jù)放到不同的表中(user表:user1,user2),根據(jù)uid段來區(qū)分11000000放到user1,10000012000000放到user2等等
每張表都需要帶上,MYD數(shù)據(jù)文件,.MYI索引文件,.frm表結(jié)構(gòu)文件

分區(qū):將一張表的數(shù)據(jù)分為N個(gè)區(qū)塊,可以放置在相同或是不同的磁盤上,散列在不同的位置。操作的同一張表名,由數(shù)據(jù)庫自己選擇分區(qū)

分庫:當(dāng)一臺(tái)服務(wù)器的磁盤IO遇到瓶頸或是磁盤剩余空間過小等等,可以采用分庫到不同服務(wù)器數(shù)據(jù)庫

簡單介紹:http://www.cnblogs.com/langtianya/p/4997768.html
存在問題:http://wentao365.iteye.com/blog/1740874

一種是表鎖定(myisam存儲(chǔ)引擎),一個(gè)是行鎖定(innodb存儲(chǔ)引擎)

mysql大約執(zhí)行流程

1、接收到sql;
2、把sql放到排隊(duì)隊(duì)列中;
3、執(zhí)行sql;
4、返回執(zhí)行結(jié)果。

分表

a,做mysql集群,用調(diào)度算法選擇數(shù)據(jù)庫(但是每張表的數(shù)據(jù)還是那么多,只是改變了連接隊(duì)列方面的效率,而且耗硬件)
b,預(yù)計(jì)會(huì)出現(xiàn)大數(shù)據(jù)量并訪問頻繁,按照user1,user2的方式分表(縮短每張表的數(shù)據(jù),但是前期如果沒有規(guī)劃好,后期就需要修改大量的sql)
c,merge存儲(chǔ)引擎來實(shí)現(xiàn)分表(用一個(gè)總表allUser,然后做user1和User2),具體http://www.cnblogs.com/miketwais/articles/mysql_partition.html


1,存儲(chǔ)引擎的使用不同,冷數(shù)據(jù)使用MyIsam 可以有更好的查詢數(shù)據(jù)。活躍數(shù)據(jù),可以使用Innodb ,可以有更好的更新速度。
2,對(duì)冷數(shù)據(jù)進(jìn)行更多的從庫配置,因?yàn)楦嗟牟僮魇遣樵儯@樣來加快查詢速度。對(duì)熱數(shù)據(jù),可以相對(duì)有更多的主庫的橫向分表處理。
3,對(duì)于一些特殊的活躍數(shù)據(jù),也可以考慮使用memcache ,redis之類的緩存,等累計(jì)到一定量再去更新數(shù)據(jù)庫.

三、引擎

mysql中 myisam 引擎不支持事務(wù)的概念,多用于數(shù)據(jù)倉庫這樣查詢多而事務(wù)少的情況,速度較快。
mysql中 innoDB 引擎支持事務(wù)的概念,多用于web網(wǎng)站后臺(tái)等實(shí)時(shí)的中小型事務(wù)處理后臺(tái)。

四、優(yōu)化

//檢索速度的提升
1、like '%tangyb' 這種前面模糊匹配會(huì)嚴(yán)重影響檢索速度
2、limit 的offset 是取offset+N行 并不是從offset開始,所以offset特別大的時(shí)候 影響效率
3、count()會(huì)統(tǒng)計(jì)所有行 ,count(1)必須確保第一列不為null,否則不會(huì)統(tǒng)計(jì),所以mysql推薦使用count(
4、禁止使用外鍵(不適合分布式、高并發(fā))和存儲(chǔ)過程(不利于調(diào)試、擴(kuò)展、移植)
5、最好避免in的使用,最好在1000以內(nèi)
6、mybatis多用resultMap,禁止返回resultClass,減少耦合,方便維護(hù)
7、表的設(shè)計(jì) 包括 id、gmt?_creat、gmt?_modified

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,247評(píng)論 6 543
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,520評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,362評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,805評(píng)論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,541評(píng)論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,896評(píng)論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,887評(píng)論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,062評(píng)論 0 290
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,608評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,356評(píng)論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,555評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,077評(píng)論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,769評(píng)論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,175評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,489評(píng)論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,289評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,516評(píng)論 2 379

推薦閱讀更多精彩內(nèi)容