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 閱讀(530) 評論(0)  編輯  收藏 所屬分類: Database
          主站蜘蛛池模板: 东山县| 凤阳县| 泌阳县| 台州市| 武功县| 禹州市| 汨罗市| 建阳市| 翼城县| 寿阳县| 达日县| 长寿区| 福建省| 阜宁县| 星座| 曲靖市| 新巴尔虎左旗| 德保县| 农安县| 道孚县| 舞钢市| 镇远县| 东光县| 许昌市| 松潘县| 西贡区| 丹阳市| 遵化市| 仪征市| 淮滨县| 文昌市| 牟定县| 扶风县| 思茅市| 紫阳县| 东莞市| 仁化县| 鲁山县| 赤城县| 彰化市| 南丹县|