MySQL事务及字符集介绍
生活随笔
收集整理的這篇文章主要介紹了
MySQL事务及字符集介绍
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文?http://www.abcdocker.com/abcdocker/77
事務介紹
簡單來說,事務就是指邏輯上的一組SQL語句操作,組成這組操作的各個SQL語句,執行時要么全成功要么全失敗。? ? MySQL5.5支持事務的引擎:Innodb/ndb事務四大特性(ACID)
1.原子性(Atomicity) 事務是一個不可分割的單位,事務中的所有SQL等操作要么全都發生,要么都不發生 2.一致性(Consistency) 事務發生前和發生后,數據的完整性必須保持一致 3.隔離性(Isolation) 當并發訪問訪問數據庫時,一個正在執行的事務在執行完畢前,對于其他的會話是不可見的,多個并發事務之間的數據庫是相互隔離的。 4.持久性(Durability) 一個事務一旦被提交,它對數據庫中的數據改變就是永久性的。如果出了錯誤,事務也不允許撤銷,只能通過“補償性事務”事務的開啟
數據庫默認事務是自動提交的,也就是發一條sql它就執行一條。如果想多條sql放在一個事務中執行,則需要使用事務進行處理。當我們開啟一個事務,并且沒有提交,mysql會自動回滾事務,或者我們使用rolback命令回滾事務。 MySQL默認是自動提交的,也就是提交一個QUERY,它就直接執行!我們可以通過以下命令進行查詢:禁止自動提交
mysql>set global autocommit=OFF mysql>set global autocommit=NO 開啟自動提交 rolback回滾事務(oracle) commit提交事務(oracle)MySQL引擎概述
1.1 什么是存儲引擎?
我們先來個比喻,我們都知道錄制一個視頻文件,可以轉成不同的格式如mp4、avi、wmv等,而存在我們電腦的磁盤上也會存在不同類型的文件系統中windows里常見的nfs,fat32.存在于linux常見的ext3,ext4,xfs。但是我們活著用戶看到實際視頻內容是一樣的。直觀區別是,占用系統的空間大小與清晰程度可能不一樣1.2 MySQL存儲引擎架構
MySQL的存儲引擎是MySQL數據庫的重要組成部分,MySQL常用的表的引擎為MyISAM和InnoDB兩種。MySQL的美中存儲引擎在MySQL里通過插件的方式使用的。MySQL可以同時支持多種存儲引擎。MyISAM引擎介紹
1.1什么是MyIASM引擎?
MyIASM引擎是MySQL關系數據庫管理系統的默認存儲引擎(MySQL 5.5.5以前)這種MySQL表的存儲結構從舊的IASM代碼擴展出許多有用的功能。在新版本的MySQL中,InnoDB引擎由于對事物參考完成行,以及更好的并發性等優點開始逐漸的取代MyIASM引擎。 可以使用show create table 庫名\G,查看創建表1.2 MyISAM引擎特點(此處面試最好全說出來)
1.不支持事務 (事務是指邏輯上的一組操作,組成這組操作的各個單元,要么全成功要么全失敗) 2.表級鎖定,數據更新時鎖定整個表:其鎖表機制是表級鎖定,這雖然可以讓鎖定的實現成本很小但是也同時大大降低了其并發性能。 3.讀寫互相阻塞:不僅會在寫入的時候阻塞讀取,MyIASM還會在讀取的時候阻塞寫入,但讀本身并不會阻塞另外的讀。 4.只會緩存索引:MyIASM可以通過key_buffer_size緩存索引,以大大提高訪問性能減少磁盤IO。但是這個緩存區只會緩存索引,而不會緩存數據。1.3 MyIASM引擎適用的生產業務場景
1)不需要事務支持的業務(例如轉賬就不行) 2)一般為讀數據比較多的應用,讀寫都頻繁場景不適合,讀多或者寫多的都適合。 3)讀寫并發訪問相對較低的業務(純讀純寫高并發也可以)(鎖定機制問題) 4)數據修改相對較少的業務(阻塞問題) 5)以讀為主的業務,例如:數據庫系統表、www、blog圖片信息數據庫,用戶數據庫。商品庫等業務 6)對硬件一致性要求不是非常高的業務(不支持事務) 7)硬件資源比較差的機器可以用MySAM(占用資源少) 8)使用讀寫分離的MySQL從庫可以使用MyIASM 小結:單一對數據庫的操作都可以使用MyIASM,所以單一就是盡量純讀,或純寫(insert,update,delete)等1.4 MyIASM引擎調優精要
1.設置合適的索引(緩存機制) 2.調整讀寫優先級,根據實際需求確保重要操作更優先執行。 3.啟用延遲插入改善大批量寫入性能(降低寫入頻率,盡可能多條數據一次性寫入) 4.盡量順序操作讓insert數據都寫入到尾部,減少阻塞 5.分解大的時間長的SQL操作,降低單個操作的阻塞時間。 6.降低并發數(減少對MySQL訪問),某些高并發場景通過應用進行排隊隊列機制 7.對于相對靜態(更改不頻繁)的數據庫數據,充分利用Query Cache或memcached緩存服務可以極大的提高訪問效率,網站動態內容靜態化,減少對數據庫的訪問。InnoDB引擎
1.1 什么是InnoDB引擎?
InnoDB引擎是MySQL數據庫的另一個重要的存儲引擎,整成為目前MySQL AB所發行新版的標準,被包含在所有二進制安裝包里。和其他的存儲引擎相比,InnoDB引擎的優點是支持兼容ACID的事務(類似于PostgerSQL)以及參數完整性(即對外鍵的支持) Oracle公司2005年10月收購了Innobase。Innobase采用雙認證授權,它使用GUN發行,也允許其他想將InnoDB結合到商業軟件的團體獲得授權。 MySQL5.5.5以后數據庫的默認存儲引擎為InnoDBInnoDB引擎特點
1.支持事務:支持4個事務隔離級別,支持多版本讀。 2.行級鎖定(更新時一定是鎖定當前行):通過索引實現,全表掃描仍然會是表鎖,注意間隙鎖的影響。 3.讀寫阻塞與事務隔離級別相關。 4.具有非常搞笑的緩存特性:能緩存索引,也能緩存數據。 5.整個表和主鍵以Cluster方式存儲,組成一顆平衡樹。 6.所有Secondary Index都會保存主鍵信息 7.支持分區,表空間,類似oracle數據庫 8.支持外鍵約束?5.5 以后不支持全文索引,以后支持了。 9.和MyIASM引擎相比,InnoDB對硬件資源要求比較高。InnoDB特點:面試必答題
1.Row-level locking ???????#行級鎖 2.Full-text search indexs ?#全文索引 3.Data caches????????????? #緩存數據 4.Index caches??????????? #索引緩存 5.Transactions??????????? #支持事務 6.占用資源多 7.讀寫阻塞與事務隔離級別相關。 8.外鍵InnoDB引擎使用的生產業務場景
1、需要事務支持的業務(具有較好的事務特性) 2、行級鎖定對高并發有很好的適應能力,但需要確保查詢是通過索引完成 3、數據讀寫及更新都較為頻繁的場景,如:BBS。SNA。微博,微信等。 4、數據一致性要求較高的業務,例如:充值轉賬、銀行卡轉賬。 5、硬件設備內存較大,可以利用InnoDB較好的緩存能力來提高內存利用率,盡可能減少磁盤IOInnoDB引擎調優精要
1、主鍵盡可能小,避免給Secondary index 帶來過大的空間負擔 2、建立有索引避免全表掃描,因為會使用表鎖。 3、盡可能緩存所有的索引和數據,提高響應速度,減少磁盤IO消耗 4、在大批量小插入的視乎,盡量自己控制事務而不要使用autocommit自動提交,有開關可以控制提交方式: 5、合理設置innodb_flush_log_at_trx_commit參數值,不要過度追求安全性。 如果Innodb_flush_log_at_trx_commit的值為0,log buffer每秒就會被刷寫日志文件到磁盤,提交事務的時候不會任何操作。 6、避免主鍵更新,因為這會帶來大量的數據移動生產環境中如何批量更改MySQL引擎
一般來說這樣的需求不多見,但偶爾也會有。 (1)M月SQL語句修改有關MySQL企業常見企業面試題
1.MySQL有哪些存儲引擎,各自有什么特點和區別? MySQL5.5 :MyIASM Memory InnoDB NDB 2.生產環境中應如何選用MySQL的引擎? 在一般生產既有讀又有寫的業務中,建議使用Innodb引擎,一句話盡可能多的使用innodb引擎 純寫,純寫可用myisam。例如系統的MySQL庫 3.不同的引擎如何備份?混合引擎如何備份。 myisam或者混合總結
以上是生活随笔為你收集整理的MySQL事务及字符集介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言ascii码表数字,求教!我想显示
- 下一篇: android 耳机检测,android