我对数据库真得不是很熟,我想知道
1、表空间是不是指把数据库分割成若干个空间,每个空间有自己的表?
2、mysql是不是也能建立表空间?
3、为什么要有表空间这种东西,能不能举个简单点的例子?

解决方案 »

  1.   

    MYSQL中INNODB表存储引擎支持表空间,而MYISAM则没有表空间的概念。如果不考虑MYSQL,而仅谈论 TABLE SPACE, 则表空间是物理结构,是一组文件的集合,你可以用一个操作系统文件或多个文件成组形成一个表空间。 至于这个TABLESPACE上放几个表,或者放几个数据库的SCHEMA则是由设计来指定。回答是或不是,都是正确的或者不正确的。INNODB表存储引擎支持表空间,但严格意义上来说,它只支持一个共享的表空间。这一点虽然MYSQL自称是TABLESPACE,但从不同的理解角度来说,它根本没有表空间的作用。方便管理。 如果所有的数据都在同一个磁盘文件中,你可以设想一下。 或者如果所有的表都各自生成一个文件,这样同样会有上千个文件对应一个数据库。
      

  2.   

    表空间这个概念只适用于mysql的INNODB存储引擎.是一个存储数据和索引的地方.
    表空间有2种形式
    innodb_file_per_table为OFF时,是共享表空间(.ibdata),所有innodb存储引擎的表的数据都存放在同一个表空间里.
    innodb_file_per_table为ON时, 是独享表空间(.ibd),每个innodb的表都有自己的表空间.
    个人认为:是由于innodb的主键缓存数据,second index 保存主键信息,可以更快的检索到数据.和这个应该有点关系.
      

  3.   

    1. 仅指innoDB引擎, 表空间与数据文件对应, 每个数据文件都存储一系列物理表,目前,物理表不能跨数据文件。
    2. 是的
    3. 主要目的便于管理,同时在表数目极大的情况下,性能占优。许多物理的小文件影响文件访问的性能。
       表空间尤其适用于裸设备的情况下。
      

  4.   

    1、表空间是不是指把数据库分割成若干个空间,每个空间有自己的表?数据库是由N多表组成的,每个表有自己的表定义文件.frm文件,表索引文件,表数据文件。INNODB的索引文件和数据文件是在一起的,MYISAM是分开的。对于表空间,INNODB分成共享表空间和独享表空间2种。共享的情况下,所有表的数据都存在一个文件里,独享情况下,每个表单独文件存储此表的数据。2、mysql是不是也能建立表空间?
    表创建的时候已经创建了表空间。3、为什么要有表空间这种东西,能不能举个简单点的例子?
    存储数据的地方。