久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    關于InnoDB和MyISAM數據存儲特性的研究

     wwwijhyt圖書館 2014-05-09

    InnoDB和MyISAM是MySQL最重要的兩種數據存儲引擎,兩者都可用來存儲表和索引,InnoDB的索引和表存儲在同一個文件中,MyISAM的索引和表存儲在不同文件,但即使多個索引,也共存于一個文件。

      網絡上很多比較都是基于兩者的事務性處理和鎖處理機制等,似乎InnoDB比MyISAM沒有缺點了。但研究發現,MyISAM在數據特別是索引存儲方面具有突出的優勢,下面就此開展討論。

      1. 研究結論

      1)InnoDB占用磁盤空間比MyISAM大,MyISAM存儲數據可節省空間12%,存儲索引可節省95%;

      2)InnoDB對空閑存儲空間的使用不優。

      研究發現,MyISAM可大量節省磁盤空間,特別是對索引的存儲上,優勢巨大,這對大型MySQL數據庫的數據表和索引的物理設計,具有較大的指導意義。

      2. 研究對象及獲得的數據

        MySQL版本:5.1.26-rc,平臺:RHEL 4,Linux 2.6.9-67.ELsmp x86_64

      研究對象為創建的一個表,mytable3,初始為InnoDB類型。有54萬行非重復數據(用隨機函數產生),兩個索引。共進行兩個實驗,獲得的實驗數據如下。

     

    表占用_MB

    索引占用_MB

    InnoDB文件占用_MB

    MyISAM文件占用_MB

    初始類型InnoDB

    256

    240

    914

    0

    類型改為MyISAM

    222

    8

    914

    230

    類型改回InnoDB

    256

    240

    1034

    0

     

        從實驗數據可以看出,表類型alter為MyISAM后,所占磁盤空間僅8MB,為InnoDB的4%。而且隨著表類型改回InnoDB,InnoDB表空間被迫擴充120MB,達到1034MB,以支持該表數據的回遷。

     

         3. 實驗過程

      --實驗用表:mytable3, InnoDB類型。

      表有三個列,52萬行數據,后兩個列用隨機函數產生,重復行很少。都創建了索引。此時該表數據占用空間256MB,索引占用空間240MB,InnoDB表空間914MB。

    mysql> desc mytable3;

      +-------+-----------+------+-----+---------+-------+

      | Field | Type | Null | Key | Default | Extra |

      +-------+-----------+------+-----+---------+-------+

      | id | int(11) | YES | | NULL | |

      | name | char(100) | YES | MUL | NULL | |

      | name2 | char(120) | YES | MUL | NULL | |

      +-------+-----------+------+-----+---------+-------+

      3 rows in set (0.00 sec)

      mysql> select count(*) from mytable3;

      +----------+

      | count(*) |

      +----------+

      | 524288 |

      +----------+

      1 row in set (0.57 sec)

      mysql> select table_name, table_schema, data_length, index_length from information_schema.tables where table_name = 'mytable3';

      +------------+--------------+-------------+--------------+

      | table_name | table_schema | data_length | index_length |

      +------------+--------------+-------------+--------------+

      | mytable3 | testbk | 269271040 | 252706816 |

      +------------+--------------+-------------+--------------+

      1 row in set (0.00 sec)

      [mysql@testlocal data]$ ls -ltr

      total 947188

      drwxr-xr-x 2 mysql mysql 4096 Aug 19 09:53 test

      drwx--x--x 2 mysql mysql 4096 Aug 19 09:53 mysql

      -rw-rw---- 1 mysql mysql 125 Aug 19 10:43 mysql-bin.000001

      -rw-rw---- 1 mysql mysql 125 Aug 19 10:43 mysql-bin.000002

      -rw-rw---- 1 mysql mysql 1086 Aug 19 17:18 mysql-bin.000003

      -rw-rw---- 1 mysql mysql 693 Aug 19 20:51 mysql-bin.000004

      -rw-rw---- 1 mysql mysql 125 Aug 19 20:54 mysql-bin.000005

      -rw-rw---- 1 mysql mysql 125 Aug 19 20:58 mysql-bin.000006

      -rw-rw---- 1 mysql mysql 6 Aug 19 20:59 testlocal.sohu.com.pid

      srwxrwxrwx 1 mysql mysql 0 Aug 19 20:59 mysql.sock

      -rw-rw---- 1 mysql mysql 133 Aug 19 20:59 mysql-bin.index

      -rw-r----- 1 mysql mysql 12432 Aug 21 11:20 testlocal.sohu.com.err

      drwx------ 2 mysql mysql 4096 Aug 21 11:22 testbk

      -rw-rw---- 1 mysql mysql 5010 Aug 21 11:22 mysql-bin.000007

      -rw-r----- 1 mysql mysql 5242880 Aug 21 11:22 ib_logfile1

      -rw-r----- 1 mysql mysql 5242880 Aug 21 11:22 ib_logfile0

      -rw-r----- 1 mysql mysql 958398464 Aug 21 11:22 ibdata1

      --將該表改變類型為MyISAM

      發現InnoDB表空間未回縮,但MyISAM占用磁盤容量減少為僅約8MB。此時該表數據占用空間222MB,索引占用空間8MB,InnoDB表空間914MB。 

    mysql> alter table mytable3 engine myisam;
      Query OK, 524288 rows affected (8.51 sec)
      Records: 524288 Duplicates: 0 Warnings: 0
      mysql> select table_name, table_schema, data_length, index_length from information_schema.tables where table_name = 'mytable3';
      +------------+--------------+-------------+--------------+
      | table_name | table_schema | data_length | index_length |
      +------------+--------------+-------------+--------------+
      | mytable3 | testbk | 233308160 | 8528896 |
      +------------+--------------+-------------+--------------+
      1 row in set (0.00 sec)
      [mysql@testlocal testbk]$ ls -ltr
      total 236456
      -rw-rw-r-- 1 mysql mysql 3307 Aug 19 12:30 bak_testbk
      -rw-rw---- 1 mysql mysql 8556 Aug 19 19:35 mytable.frm
      -rw-rw---- 1 mysql mysql 8556 Aug 19 20:43 mytable2.frm
      -rw-rw---- 1 mysql mysql 8618 Aug 21 11:32 mytable3.frm
      -rw-rw---- 1 mysql mysql 233308160 Aug 21 11:32 mytable3.MYD
      -rw-rw---- 1 mysql mysql 8528896 Aug 21 11:32 mytable3.MYI

      --重新改回InnoDB

      發現InnoDB表空間又擴充了。此時該表數據占用空間256MB,索引占用空間240MB,InnoDB表空間1034MB

    mysql> alter table mytable3 engine innodb;
            Query OK, 524288 rows affected (17.41 sec)
            Records: 524288  Duplicates: 0  Warnings: 0
     
    mysql> select table_name, table_schema, data_length, index_length from information_schema.tables where table_name = 'mytable3';
             +------------+--------------+-------------+--------------+
             | table_name | table_schema | data_length | index_length |
             +------------+--------------+-------------+--------------+
             | mytable3   | testbk       |   269271040 |    252706816 | 
             +------------+--------------+-------------+--------------+
             1 row in set (0.00 sec)
     
    [mysql@testlocal data]$ ls -ltr
    total 1070188
    drwxr-xr-x  2 mysql mysql       4096 Aug 19 09:53 test
    drwx--x--x  2 mysql mysql       4096 Aug 19 09:53 mysql
    -rw-rw----  1 mysql mysql        125 Aug 19 10:43 mysql-bin.000001
    -rw-rw----  1 mysql mysql        125 Aug 19 10:43 mysql-bin.000002
    -rw-rw----  1 mysql mysql       1086 Aug 19 17:18 mysql-bin.000003
    -rw-rw----  1 mysql mysql        693 Aug 19 20:51 mysql-bin.000004
    -rw-rw----  1 mysql mysql        125 Aug 19 20:54 mysql-bin.000005
    -rw-rw----  1 mysql mysql        125 Aug 19 20:58 mysql-bin.000006
    -rw-rw----  1 mysql mysql          6 Aug 19 20:59 testlocal.sohu.com.pid
    srwxrwxrwx  1 mysql mysql          0 Aug 19 20:59 mysql.sock
    -rw-rw----  1 mysql mysql        133 Aug 19 20:59 mysql-bin.index
    -rw-r-----  1 mysql mysql      12432 Aug 21 11:20 testlocal.sohu.com.err
    drwx------  2 mysql mysql       4096 Aug 21 11:48 testbk
    -rw-rw----  1 mysql mysql       5208 Aug 21 11:48 mysql-bin.000007
    -rw-r-----  1 mysql mysql    5242880 Aug 21 11:48 ib_logfile1
    -rw-r-----  1 mysql mysql    5242880 Aug 21 11:48 ib_logfile0
    -rw-r-----  1 mysql mysql 1084227584 Aug 21 11:48 ibdata1 

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 免费国产一区二区不卡| 国产成人高清在线观看视频| 国产欧美VA天堂在线观看视频| 亚洲欧美日韩综合一区在线| 国产欧美日韩A片免费软件| 国产精品免费中文字幕| 亚洲夂夂婷婷色拍WW47| 福利在线视频一区二区| 亚洲AV无码专区亚洲AV桃 | 四虎精品视频永久免费| 中文字幕亚洲无线码A| 国产成人精品综合在线观看 | 久久精品手机观看| 欧美日韩中文国产一区发布| 小嫩批日出水无码视频免费| 亚洲AV无码乱码国产麻豆| 国产精品亚洲二区在线播放| 欧美又粗又大XXXXBBBB疯狂| 国产对白老熟女正在播放| 又大又长粗又爽又黄少妇视频| 最新亚洲人成网站在线影院| 少妇愉情理伦片丰满丰满午夜| 欧美精品一区二区在线观看播放 | 免费无码又爽又刺激高潮虎虎视频 | 国产午夜亚洲精品国产成人| 人妻少妇偷人精品无码| 噜噜久久噜噜久久鬼88| 少妇被黑人到高潮喷出白浆 | 亚洲AV日韩AV激情亚洲| 国产丝袜在线精品丝袜不卡| 中文字幕国产日韩精品| 中文字幕无码无码专区| 国产成人综合95精品视频 | 免费A级毛片樱桃视频| 免费观看的AV毛片的网站| 女人十八毛片A级十八女人| 中文字幕精品亚洲二区| 亚洲人成无码WWW久久久| 精品一区二区不卡无码AV| 欧美韩中文精品有码视频在线| 99久久精品费精品国产一区二 |