校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Mysql臨時表及分區表區別詳解

Mysql臨時表及分區表區別詳解

熱門標簽:臨沂做地圖標注 地圖標注客戶付款 咸陽防封電銷卡 新鄉智能外呼系統好處 石家莊400電話辦理公司 許昌外呼增值業務線路 廣東400企業電話申請流程 申請400電話電話價格 宜賓全自動外呼系統廠家

臨時表與內存表

內存表,指的是使用Memory引擎的表,建表語法是create table … engine=memory。這種 表的數據都保存在內存里,系統重啟的時候會被清空,但是表結構還在。除了這兩個特性看 上去比較“奇怪”外,從其他的特征上看,它就是一個正常的表

臨時表,可以使用各種引擎類型 。如果是使用InnoDB引擎或者MyISAM引擎的臨時表,寫 數據的時候是寫到磁盤上的。當然,臨時表也可以使用Memory引擎。

臨時表特性

  • 建表語法是create temporary table …。
  • 一個臨時表只能被創建它的session訪問,對其他線程不可見。所以,圖中session A創建的 臨時表t,對于session B就是不可見的。
  • 臨時表可以與普通表同名。
  • session A內有同名的臨時表和普通表的時候,show create語句,以及增刪改查語句訪問的是臨時表。
  • show tables命令不顯示臨時表。

由于臨時表只能被創建它的session訪問,所以在這個session結束的時候,會自動刪除臨時表。 也正是由于這個特性,臨時表就特別適合join優化這種場景。

create temporary table temp_t like t1;
alter table temp_t add index(b);
insert into temp_t select * from t2 where b>=1 and b=2000;
select * from t1 join temp_t on (t1.b=temp_t.b);

不同session的臨時表是可以重名的,如果有多個session同時執行join優化,不需要擔心表名重復導致建表失敗的問題。不需要擔心數據刪除問題。如果使用普通表,在流程執行過程中客戶端發生了異常斷開,或者數據庫發生異常重啟,還需要專門來清理中間過程中生成的數據表。而臨時表由于會自動回收,所以不需要這個額外的操作。臨時表的應用

分庫分表系統的跨庫查詢

一般分庫分表的場景,就是要把一個邏輯上的大表分散到不同的數據庫實例上。比如。將一個大 表ht,按照字段f,拆分成1024個分表,然后分布到32個數據庫實例上。

分區key的選擇是以“減少跨庫和跨表查詢”為依據的。如果大部分的語句都會包 含f的等值條件,那么就要用f做分區鍵。這樣,在proxy這一層解析完SQL語句以后,就能確定將這條語句路由到哪個分表做查詢。 比如

select v from ht where f=N;

這時,我們就可以通過分表規則(比如,N%1024)來確認需要的數據被放在了哪個分表上。這種語句只需要訪問一個分表,是分庫分表方案最歡迎的語句形式了。

但是,如果這個表上還有另外一個索引k,并且查詢語句是這樣的:

select v from ht where k >= M order by t_modified desc limit 100;

這時候,由于查詢條件里面沒有用到分區字段f,只能到所有的分區中去查找滿足條件的所有 行,然后統一做order by 的操作。這種情況下,有兩種比較常用的思路:

在proxy層的進程代碼中實現排序,對proxy端的壓力比較大,尤其是很容易出現內存不夠用和CPU瓶頸的問題。

把各個分庫拿到的數據,匯總到一個MySQL實例的一個表中,然后在這個匯總實例上做邏輯操作。

在匯總庫上創建一個臨時表temp_ht,表里包含三個字段v、k、t_modifified;

在各個分庫上執行

select v,k,t_modified from ht_x where k >= M order by t_modified desc limit 100;

把分庫執行的結果插入到temp_ht表中;

執行

select v from temp_ht order by t_modified desc limit 100;

為什么臨時表可以重名

create temporary table temp_t(id int primary key)engine=innodb;

執行這個語句的時候,MySQL要給這個InnoDB表創建一個frm文件保存表結構定義,還要有地方保存表數據。

這個frm文件放在臨時文件目錄下,文件名的后綴是.frm,前綴是“#sql{進程id}_{線程id}_序列 號”。你可以使用select @@tmpdir命令,來顯示實例的臨時文件目錄。

這個進程的進程號是1234,session A的線程id是4,session B的線程id是5。所以session A和session B創建的臨時表,在磁盤上的文件不會重名

MySQL維護數據表,除了物理上要有文件外,內存里面也有一套機制區別不同的表,每個表都對應一個table_def_key。 對于臨時表,table_def_key在“庫名+表名”基礎上,又加入了“server_id+thread_id”。

也就是說,session A和sessionB創建的兩個臨時表t1,它們的table_def_key不同,磁盤文件名 也不同,因此可以并存。

分區表的引擎層行為

ATE	TABLE	`t`	(
		`ftime`	datetime	NOT	NULL,
		`c`	int(11)	DEFAULT	NULL,
		KEY	(`ftime`)
)	ENGINE=InnoDB	DEFAULT	CHARSET=latin1
PARTITION	BY	RANGE	(YEAR(ftime))
Û ॔ګդᎱ
B
 (PARTITION	p_2017	VALUES	LESS	THAN	(2017)	ENGINE	=	InnoDB,
 	PARTITION	p_2018	VALUES	LESS	THAN	(2018)	ENGINE	=	InnoDB,
 	PARTITION	p_2019	VALUES	LESS	THAN	(2019)	ENGINE	=	InnoDB,
 PARTITION	p_others	VALUES	LESS	THAN	MAXVALUE	ENGINE	=	InnoDB);
 insert	into	t	values('2017-4-1',1),('2018-4-1',1);

初始化表的時候,只插入了兩行數據,sessionA的select語句對ftime這兩個記錄之間的間隙加了鎖,間隙和加鎖狀態如圖:

也就是說,2017-4-1和2018-4-1這兩個記錄之間的間隙會被鎖住,那么sessionB的兩條插入語句都應該進入鎖等待狀態。但是從效果上看,第一個insert語句是可以執行成功的,因為對于引擎來說,p2018和p2019是不同的表,2017的下一個記錄不是2018-4-1而是p2018中的supremum,所以在t1時刻索引如圖:

由于分區表的規則,sessionA只操作了p2018,sessionB要插入2018-2-1是可以的但要寫入2017-12-1要等待sessionA的間隙鎖。

對于MYISAM引擎:

因為在sessionA中,sleep了100秒,由于myisam只支持表鎖,所以這條update會鎖住整個表t的讀,但是結果是,B的第一條語句是可以執行的,第二條語句才進入鎖等待狀態。

這是myisam表鎖只在引擎層實現的,sessionA加的表鎖,是所在p2018上,因此只會堵住分區上執行的查詢,落到其他分區的查詢不受影響。這樣看來,分區表還不錯,為什么不用呢,我們使用分區表的一個原因就是單表過大,那么不使用分區表,就要使用手動分表的方式。

手動分表需要創建t_2017,t_2018,t_2019,也就是找到需要更新的所有分表,依次執行,這和分區表無實質的差別,兩者一個由serverceng決定使用哪個分區,一個由應用層代碼決定使用哪個分表,因此,從引擎層看無實際差別。其實主要區別是在server層:打開表行為。

分區策略

每當第一次訪問一個分區表時,mysql需要把所有分區都訪問一遍:如果分區很多,比如查過了1000個,mysql啟動的時候,open_files_limit默認為1024,那么就會在訪問表的時候,由于打開了所有文件,超過了上限而報錯。

mysiam使用的分區策略成為通用分區策略,每次訪問分區都是有server層控制。有比較嚴重的性能問題。

innodb引擎引入了本地分區策略,是在innodb內部自己管理打開分區的行為。

分區表的server層行為

從server層看,一個分區表就是一個表。

雖然B只操作2017分區,但是由于A持有整個表t的mdl鎖,導致了B的alter語句被堵住。如果是使用普通分表,不會跟另外一個分表上的查詢語句出現MDL沖突。

小結:

  • mysql在第一次打開分區表的時候,需要訪問所有分區
  • 在server層,認為這是同一張表,因此所有分區公用MDL鎖
  • 在引擎層,認為這是不同的表,因此在MDL鎖之后,會根據分區表規則,只訪問必要的分區。

分區表應用場景

分區表的優勢是對業務透明,相對于用戶分表來說,使用分區表的業務代碼更簡潔,分區表可以很方便的清理歷史數據。

alter table t drop partition 操作是刪除分區文件,效果跟drop類似,與delete相比,優勢是速度快,對系統影響小。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • MySQL最佳實踐之分區表基本類型
  • MySQL分區表的基本入門教程
  • MySQL優化之分區表
  • 解決mysql刪除用戶 bug的問題
  • MySQL對window函數執行sum函數可能出現的一個Bug
  • MySQL關于exists的一個bug
  • CentOS 安裝 PHP5.5+Redis+XDebug+Nginx+MySQL全紀錄
  • 關于MySQL分區表的一個性能BUG

標簽:合肥 阜新 日照 北京 貴州 臺灣 鷹潭 鎮江

巨人網絡通訊聲明:本文標題《Mysql臨時表及分區表區別詳解》,本文關鍵詞  Mysql,臨時,表,及,分區表,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Mysql臨時表及分區表區別詳解》相關的同類信息!
  • 本頁收集關于Mysql臨時表及分區表區別詳解的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    亚洲国产精品精华液2区45| 久久久久久久久蜜桃| 成人av免费在线观看| 黄色资源网久久资源365| 久久se精品一区二区| 日韩精品一二区| 亚洲精品日产精品乱码不卡| 国产精品久久久久久久久久免费看| 国产欧美精品在线观看| 国产视频视频一区| 国产精品视频看| 国产精品久久久久久户外露出| 中文字幕电影一区| 洋洋av久久久久久久一区| 亚洲第一成人在线| 麻豆国产欧美日韩综合精品二区| 久久精品国产精品亚洲红杏| 成人性生交大片免费看在线播放| 91在线一区二区| 欧美日韩电影在线播放| 欧美不卡在线视频| 亚洲色图欧美偷拍| 偷拍自拍另类欧美| 国产一区二区福利| 在线观看免费视频综合| 精品国产百合女同互慰| 亚洲日本一区二区三区| 精品在线你懂的| 97超碰欧美中文字幕| 91精品国产综合久久小美女| 国产欧美日韩另类一区| 亚洲影院久久精品| 国产成人综合自拍| 欧美日韩aaaaaa| 国产欧美精品一区aⅴ影院| 亚洲人成在线播放网站岛国| 琪琪一区二区三区| 91在线免费看| 久久先锋影音av| 亚洲第一成年网| 99精品1区2区| 精品国产欧美一区二区| 亚洲综合av网| 97se狠狠狠综合亚洲狠狠| 欧美大片拔萝卜| 艳妇臀荡乳欲伦亚洲一区| 国产aⅴ综合色| 精品久久久网站| 亚洲高清免费在线| av一区二区久久| 国产亚洲污的网站| 麻豆精品一二三| 在线亚洲高清视频| 国产精品麻豆欧美日韩ww| 久久精品国产精品亚洲精品| 欧美日韩和欧美的一区二区| 成人免费在线视频观看| 韩国一区二区视频| 日韩三级视频在线观看| 香蕉乱码成人久久天堂爱免费| 99久久99久久久精品齐齐| 欧美激情中文字幕| 成人网男人的天堂| 国产喷白浆一区二区三区| 九色|91porny| 精品三级在线观看| 黄色日韩三级电影| 日韩欧美久久久| 蜜桃视频在线观看一区二区| 欧美精品一卡两卡| 男男gaygay亚洲| 日韩欧美一区二区视频| 麻豆久久久久久久| 久久综合中文字幕| 国产精品99久久久久久宅男| 日韩美女视频在线| 亚洲成a人v欧美综合天堂| 在线看日本不卡| 五月婷婷激情综合网| 欧美男生操女生| 久久99精品一区二区三区| 日韩欧美一区二区免费| 国模冰冰炮一区二区| 欧美激情在线免费观看| 91在线国产观看| 亚洲精品视频在线看| 欧美午夜精品久久久久久超碰| 亚洲一本大道在线| 欧美一级二级三级蜜桃| 国产美女在线观看一区| 最新热久久免费视频| 日本久久精品电影| 蜜桃久久久久久久| 久久久久久久久一| 色天天综合色天天久久| 日韩国产精品91| 久久奇米777| 色狠狠综合天天综合综合| 调教+趴+乳夹+国产+精品| 精品成人一区二区| 99久久精品一区| 日本伊人色综合网| 欧美国产1区2区| 制服丝袜一区二区三区| 成人午夜又粗又硬又大| 亚洲一区二区三区免费视频| 久久―日本道色综合久久| 91久久精品国产91性色tv| 激情图片小说一区| 樱桃视频在线观看一区| 精品国产91乱码一区二区三区| 成人激情图片网| 免费成人深夜小野草| 中文字幕一区二区在线观看 | 麻豆成人久久精品二区三区小说| 国产性天天综合网| 欧美体内she精高潮| 成人免费看黄yyy456| 麻豆传媒一区二区三区| 亚洲国产精品综合小说图片区| 久久久综合视频| 337p亚洲精品色噜噜噜| 91社区在线播放| 国产夫妻精品视频| 美美哒免费高清在线观看视频一区二区 | 欧美色偷偷大香| 国产999精品久久久久久| 免费在线成人网| 亚洲高清免费视频| 亚洲欧美另类图片小说| 中文字幕国产一区二区| 日韩美一区二区三区| 欧美剧情电影在线观看完整版免费励志电影| 九九九精品视频| 视频在线在亚洲| 亚洲大型综合色站| 亚洲一区二区三区自拍| 综合婷婷亚洲小说| 中文字幕亚洲视频| 欧美韩国日本不卡| 欧美激情中文字幕一区二区| 欧美刺激脚交jootjob| 日韩欧美一卡二卡| 精品国产一区二区三区四区四| 91精品国产高清一区二区三区| 欧美日韩一级二级三级| 欧美美女一区二区在线观看| 欧美主播一区二区三区| 91首页免费视频| 国产91高潮流白浆在线麻豆 | 亚洲国产综合在线| 一区二区久久久| 一区二区在线观看不卡| 亚洲免费在线电影| 一区二区在线免费| 一区二区三区成人| 亚洲福利一区二区| 日欧美一区二区| 免费成人你懂的| 国产精品91一区二区| 国产成人精品三级| 成人中文字幕合集| 99精品欧美一区二区蜜桃免费 | 99精品在线免费| 91女厕偷拍女厕偷拍高清| 色激情天天射综合网| 欧美在线免费播放| 日韩欧美自拍偷拍| 国产欧美精品国产国产专区| 亚洲视频免费在线观看| 亚洲一区二区三区视频在线| 奇米影视7777精品一区二区| 国产精品一二一区| 91毛片在线观看| 在线播放亚洲一区| 欧美激情综合在线| 一区二区三区中文在线| 美女视频黄a大片欧美| 成人性视频网站| 91精品蜜臀在线一区尤物| 久久伊人中文字幕| 亚洲精品菠萝久久久久久久| 免费成人在线影院| 99精品久久久久久| 日韩一区二区精品葵司在线| 国产精品久久久久aaaa樱花| 五月天一区二区三区| 成人综合在线观看| 在线不卡免费av| 日韩毛片高清在线播放| 免费成人av在线| 91网站最新网址| 欧美精品一区二区三区很污很色的 | 国产精品久久久久桃色tv| 午夜视频一区二区| 不卡av免费在线观看| 日韩欧美精品在线| 亚洲精品成人在线| 国产高清久久久| 日韩美女在线视频|