Atea - Hero's Grave

          面向對象,開源,框架,敏捷,云計算,NoSQL,商業智能,編程思想。

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            40 隨筆 :: 0 文章 :: 28 評論 :: 0 Trackbacks

          限于自己的水平還未達到DBA級別,只能先以應用為主的角度讀了。
          也許過幾個月再回來重讀,會有另一番心得。


          索引

          約束和索引的區別
          約束更是一個邏輯的概念,用來保證數據的完整性。而索引是一個數據結構,有邏輯上的概念,更是一個物理存儲的方式。

          默認情況下,MySQL允許非法或者不正確數據的插入或更新,或者內部將其轉化為一個合法的值。如對NOT NULL的字段插入NULL,會將其更改為0再進行插入。
          比如用Insert XXX SELECT語句就可以插入,但用Insert XXX values XXX則不行。
          可以通過修改sql_mode參數來約束輸入值合法性。

          在MySQL InnoDB中,建立外鍵會自動給其加上索引。而在Oracle則不會,要注意手動添加索引。

          B+索引適合取得的數據量少時使用。
          Hash索引只能用來搜索等值的查詢,而對于其他查找類型如范圍查找則不能使用。

          事務與鎖

          InnoDB的默認事務隔離級別為Repeatable Read。(Oracle是Read Committed)

          對于自增列的并發插入較差。(5.1.22版后有所改善)

          默認情況下InnoDB不會回滾超時引發的異常。(用JDBC則能避免此問題)

          發生死鎖后,InnoDB會馬上回滾該事務(錯誤號1213),而應用程序則不用再回滾了。

          Sql Server有鎖升級機制,MySQL和Oracle無。

          ROLLBACK TO SAVEPOINT并不會結束事務,仍然需要調用COMMIT或ROLLBACK。

          TRUNCATE TABLE和DELETE的區別在于前者不能被回滾。

          SERIALIABLE的事務隔離級別主要應用于InnoDB的分布式事務。

          使用InnoDB不忌諱相對長時間開啟事務,不會發生Oracle的Snapshot Too Old。

          自動回滾會隱藏錯誤,盡量少用或不用。

          對事務的操作,應該交由應用程序控制,而不是存儲過程。

          備份

          熱備的事務隔離級別應是Repeatable Read,從而實現數據一致性。

          mysqldump參數
          --single-transaction 只對InnoDB有效
          --lock-tables db又有MyISAM又有InnoDB時使用
          --hex-blob 能把blob等數據備份出來
          mysqldump不能導出視圖,需要另外導出,比如使用frm文件

          其他

          MyISAM特點是表鎖、支持全文索引、不支持事務、【外鍵】。

          Archive只支持INSERT和SELECT操作,非常適合存儲歸檔數據。

          查看錯誤日志
          show variables like 'log_error';

          OLAP是CPU密集型的操作,而OLTP是IO密集型的操作。

          Windows下表名不區分大小寫,而Linux默認大小寫敏感。


          http://atealxt.appspot.com/article/20110228/mysql_study_note_9787111321880_B004F9PL2O.html

          posted on 2011-02-28 23:16 Atea 閱讀(541) 評論(0)  編輯  收藏 所屬分類: Database
          主站蜘蛛池模板: 湛江市| 根河市| 石狮市| 湟源县| 玉树县| 邓州市| 阳谷县| 安仁县| 牡丹江市| 西平县| 大理市| 班戈县| 固安县| 江西省| 精河县| 鱼台县| 北辰区| 田林县| 清原| 江西省| 刚察县| 资溪县| 特克斯县| 忻城县| 若尔盖县| 景泰县| 承德市| 广州市| 大方县| 南郑县| 平利县| 衡水市| 洛南县| 新干县| 沧州市| 库尔勒市| 兴隆县| 丹棱县| 吴川市| 通江县| 图们市|