我的Blog我做主^_^

          走向一條通往JAVA的不歸路...

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            64 隨筆 :: 68 文章 :: 77 評論 :: 0 Trackbacks
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(10)

          隨筆分類

          隨筆檔案

          文章分類

          新聞分類

          收藏夾

          友情

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          InnoDB 是 MySQL 上第一個提供外鍵約束的引擎,除了提供事務處理外,InnoDB 還支持行鎖,提供和 Oracle 一樣的一致性的不加鎖讀取,能增加并發讀的用戶數量并提高性能,不會增加鎖的數量。
          InnoDB 的設計目標是處理大容量數據時最大化性能,它的 CPU 利用率是其他所有基于磁盤的關系數據庫引擎中最有效率的。

          InnoDB 是一套放在 MySQL 后臺的完整數據庫系統,InnoDB 有它自己的緩沖池,能緩沖數據和索引,InnoDB 還把數據和索引存放在表空間里面,可能包含好幾個文件,這和 MyISAM 表完全不同,在 MyISAM 中,表被存放在單獨的文件中,InnoDB 表的大小只受限于操作系統文件的大小,一般為 2GB。

          MySQL 的源代碼中,從 3.23.34a 開始包含 InnoDB 表,并在 MySQL -Max 的二進制版本中激活。

          如果你使用源碼版本下載,自己編譯的話,需要采用 --with-innodb 選項:

          ./configure --with-innodb

          在 MySQL-Max-3.23 上使用 InnoDB 時,必須在 my.cnf 或者 my.ini 文件中的 [mysqld] 小節指定啟動參數:

          innodb_data_file_path=ibdata:30M

          InnoDB 以 GNU GPL 版本 2 的許可發布。

          MySQL-Max-3.23: 這個產品可以用于生產環境使用。
          MySQL-4.0: 這個是開發版本,和 3.23 相比增加了多表刪除,查詢結果緩沖,SSL 通信,4.0.1 為 Beta 版本。

          在 3.23 中,必須至少指定 innodb_data_file_path 的大小,但是在 MySQL-4.0 中這個值默認為 64MB,文件名為 ibdata1。

          為了得到好的性能,必須指定 InnoDB 參數,例如:
          對于一臺 128MB 內存, 10GB 硬盤的 Windows NT 機器的配置如下:

          [mysqld]

          innodb_data_home_dir = c:\ibdata
          # 數據文件必須能容下數據和索引
          innodb_data_file_path = ibdata1:2000M;ibdata2:2000M
          # 設置緩沖池大小為內存的 50 - 80 %
          set-variable = innodb_buffer_pool_size=70M
          set-variable = innodb_additional_mem_pool_size=10M
          innodb_log_group_home_dir = c:\iblogs
          # log_arch_dir 必須和 log_group_home_dir 一樣
          innodb_log_arch_dir = c:\iblogs
          innodb_log_archive=0
          set-variable = innodb_log_files_in_group=3
          # 設置日志文件大小為緩沖池的 15%。
          set-variable = innodb_log_file_size=10M
          set-variable = innodb_log_buffer_size=8M
          # 如果丟失最近的幾個事務影響不大的話,設置 flush_log_at_trx_commit 為 0。
          innodb_flush_log_at_trx_commit=1
          set-variable = innodb_file_io_threads=4
          set-variable = innodb_lock_wait_timeout=50

          注意 InnoDB 不會自己建立目錄,你必須使用操作系統命令建立目錄,并注意 MySQL 的權限。

          第一次運行 MySQL 時,建議使用命令行方式。在 Windows 下,用命令行開啟:

          C:\MYSQL>mysqld-max --standalone --console

          在 Windows 下設置配置文件的原則是:
          my.cnf 和 my.ini 只能是一個有效。
          my.cnf 放在 C: 根目錄下, my.ini 文件放在 WINDIR 目錄下,C:\WINDOWS 或者 C:\WINNT。

          在 Linux 下面,初始配置文件按下面的順序搜索:

          /etc/my.cnf 全局選項
          COMPILATION_DATADIR/my.cnf 服務器范圍的選項
          defaults-extra-file 采用 --defaults-extra-file=.... 的文件
          ~/.my.cnf 用戶指定的選項

          假設你有一臺 512MB 內存,三臺 20GB 硬盤(路徑分別為:"/","/dr2","/dr3“)的服務器,設置的例子為:

          [mysqld]
          innodb_data_home_dir = /
          innodb_data_file_path = ibdata/ibdata1:2000M;dr2/ibdata/ibdata2:2000M
          set-variable = innodb_buffer_pool_size=350M
          set-variable = innodb_additional_mem_pool_size=20M
          innodb_log_group_home_dir = /dr3/iblogs
          innodb_log_arch_dir = /dr3/iblogs
          innodb_log_archive=0
          set-variable = innodb_log_files_in_group=3
          set-variable = innodb_log_file_size=50M
          set-variable = innodb_log_buffer_size=8M
          innodb_flush_log_at_trx_commit=1
          set-variable = innodb_file_io_threads=4
          set-variable = innodb_lock_wait_timeout=50
          #innodb_flush_method=fdatasync
          #innodb_fast_shutdown=1
          #set-variable = innodb_thread_concurrency=5

          為了提升性能,我們把日志文件和數據文件放在不同的磁盤,另外還可以采用裸的磁盤分區來存儲數據以提升性能。

          需要提醒的是,在 Linux x86 上不要把內存設置太高,glibc 會把進程堆增長到線程堆棧之上,能把服務器給搞垮,下面的值接近于 2GB 時就很危險:

          innodb_buffer_pool_size + key_buffer +
          max_connections * (sort_buffer + record_buffer) + max_connections * 2 MB

          每個線程將使用 2MB(二進制版本為 256 KB) 的堆棧,在最壞的情況下,還會使用 sort_buffer + record_buffer 的附加內存。

          后續的文章,我們還將介紹 InnoDB 表的建立,MyISAM 到 InnoDB 的轉換,外鍵約束的使用,自動增長列的操作,InnoDB 數據庫的備份和恢復,事務的使用,性能調優等內容。

          請繼續關注,FreeLAMP.com 為您提供的企業級的開放源碼數據庫解決方案。


          posted on 2007-01-18 09:08 java_蟈蟈 閱讀(212) 評論(0)  編輯  收藏 所屬分類: 數據庫
          主站蜘蛛池模板: 普宁市| 丰宁| 崇信县| 南乐县| 南丰县| 阳城县| 北辰区| 星子县| 福安市| 巴马| 枣阳市| 敦煌市| 阜平县| 中山市| 五常市| 连城县| 夏邑县| 楚雄市| 永靖县| 简阳市| 晋中市| 札达县| 尉犁县| 拉孜县| 永靖县| 阳朔县| 当涂县| 建昌县| 科尔| 曲水县| 万载县| 夏河县| 乐陵市| 武川县| 新田县| 安达市| 澄江县| 内丘县| 禹州市| 德格县| 晴隆县|