14.7.4 InnoDB File-Per-Table Tablespaces
14.7.4 InnoDB File-Per-Table Tablespaces 从历史上看,所有的InnoDB 表和indexes 是存储在system 表空间。 这个整体的方法是针对机器是整个用于数据库处理,精心策划的数据增长, 任何磁盘存储分配给MySQL 不会被其他目的需要. InnoDB的file-per-table tablespace功能提供一个更加灵活的选择, 每个InnoDB 表和他的索引是存储在一个单独的.ibd文件。 每个这样的.ibd文件代表一个单独的表空间。 这个功能是通过innodb_file_per_table 配置选项,默认启用在5.6.6和更高版本 文件表空间的优势: 1.你可以回收磁盘空间当truncate或者drop 一个表存储在一个 file-per-table tablepace Truncating or dropping 表存储在共享的系统表空间创超的空闲空间在系统表空间数据文件内(ibdata files) 这个只能用于InnoDB data 同样, 一个表复制 ALTER TABLE 操作在表上 位于一个共享的tablespace 可以增加空间使用的总量 这样的操作需要额外的空间等同于表和索引的大小。 这个额外的空间需要用于表复制ALTER 操作是不释放回操作系统 3. TRUNCATE 表操作是快速的在一个表存储在file-per-table tablepaces. 你可以存储特定的表在单独的存储设备,对于I/O 优化, 空间管理,或者备份目的。 在以前的版本, 你只能移动整个数据库目录到其他设备 和创建软连接在MySQL 数据目录 在MySQL 5.6.6和更高版本,你可以指定每个表的位置使用 CREATE TABLE ... DATA DIRECTORY = absolute_path_to_directory, 你可以运行OPTIMIZE TABLE 来压缩或者重新创建一个 file-per-table 表空间。 当你运行一个 OPTIMIZE TABLE, InnoDB 创建一个新的.ibd file 使用一个临时的名字, 只使用需要的空间来存储实际的数据。 当优化器是完成后,InnoDB 删除老的.ibd文件和替换为新的, 如果先前的.ibd文件增长显著 但是实际数据只占用它的大小的一部分,运行OPTIMIZE TABLE可以回收不使用的空间 你可以移动单个InnoDB表相比整个数据库 你可以复制单个InnoDB 表从MySQL 实例到另外的地方 表创建在 file-per-table tablespaces 使用 Barracuda file format. Barracuda file format 有压缩和动态行格式的功能。 表创建在system 表空间不能使用那些功能。 利用那些功能对于一个存在的表,启用 innodb_file_per_table setting 运行ALTER TABLE t ENGINE=INNODB t 来放置表在一个 file-per-table tablespace. 你可以让更有效的表的存储 使用 BLOB or TEXT columns 使用动态行格式 File-per-table tablespaces 可以改善恢复的机会,当一个corruption 发生时节省时间, 当一个拂去其不能启动时, 或者当备份和binary logs 是不可用时 你可以备份或者恢复单个表使用MySQL Enterprise Backup product, 不需要中断其他InnoDB 表的使用。 这是有益的 如果你的表需要不频繁的备份或者 不同的备份计划 File-per-table tablespaces 是方便的对于 每个表的状态报告 当复制或者备份表时 你不能监控表大小在系统层面,不访问MYSQL 数据库的话 常用的Linux 文件系统不允许 并发写到一个单独的文件 当 innodb_flush_method 是设置为O_DIRECT mysql> show variables like '%innodb_flush_method%';
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| innodb_flush_method | |
+---------------------+-------+
1 row in set (0.00 sec) 因此, 有可能性能改善党使用 file-per-table 表空间 File-Per-Table Tablespaces 存在的缺点: 1. file-per-table tablespaces 每个表有一个未使用的空间, 只能被相同表的行使用。 这个会浪费空间 2.fsync 操作必须允许在每个打开的表相比在一个单独的文件。因为 这里有一个单独的fsync 操作在每个文件, 写操作在多个表不能合成一个单独的I/O操作。 这个可能需要InnoDB 执行更多数量得到fsync操作 3.mysqld 必须每个表一个文件句柄, 这可能会影响性能 如果你有大量的表 4.会使用更多的文件句柄 5.innodb_file_per_table 是默认启用的在 MySQL 5.6.6和更高版本。 你可以考虑禁用它如果和mysql 5.5或者5.1的兼容性是一个问题。 6.例如, 当重新组织 clustered index 对于一个InnoDB 表, 表时重新创建使用当前设置对于innodb_file_per_table. 7.这个行为不应用当增加或者删除InnoDB secondary indexes. 当一个 secondary index 被创建没有rebuild 表。 8. 如果很多表时在增长 有更多的碎片, 会阻碍 DROP TABLE和表扫描性能。
14.7.4 InnoDB File-Per-Table Tablespaces的更多相关文章
- 14.5.4 InnoDB File-Per-Table Tablespaces 每个表一个文件
14.5.4 InnoDB File-Per-Table Tablespaces 每个表一个文件 从历史上看, 所有的InnoDB 表和索引是存储在system 表空间, 这个整体的方法是针对机器专注 ...
- 14.8.2 Verifying File Format Compatibility 校验文件格式兼容性:
14.8.2 Verifying File Format Compatibility 校验文件格式兼容性: 14.8.2.1 Compatibility Check When InnoDB Is St ...
- 14.6.1 InnoDB Startup Configuration 启动配置
14.6.1 InnoDB Startup Configuration 启动配置 首先描述关于InnoDB 配置设计数据库文件,日志文件,page size 和内存buffer 的配置. 推荐你定义数 ...
- 14.10.1 InnoDB Disk I/O
14.10 InnoDB Disk IO and File Space Management InnoDB 磁盘IO和文件空间管理: 14.10.1 InnoDB Disk I/O 14.10.2 F ...
- 14.8.1 Enabling File Formats
14.8 InnoDB File-Format Management 14.8.1 Enabling File Formats 14.8.2 Verifying File Format Compati ...
- mysql 异常宕机 ..InnoDB: Database page corruption on disk or a failed,,InnoDB: file read of page 8.
mysql 测试环境异常宕机 系统:\nKylin 3.3 mysql版本:5.6.15--yum安装,麒麟提供的yum源数据库版本 error日志 181218 09:38:52 mysqld_sa ...
- 14.3.5.1 Interaction of Table Locking and Transactions 表锁和事务的相互作用
14.3.5.1 Interaction of Table Locking and Transactions 表锁和事务的相互作用 LOCK TABLES 和UNLOCK TABLES 交互实用事务如 ...
- 14.2.3 InnoDB Redo Log
14.2.3 InnoDB Redo Log 14.2.3.1 Group Commit for Redo Log Flushing redo log 是一个基于磁盘数据结构的用于在crash 恢复正 ...
- 14.1.1 InnoDB as the Default MySQL Storage Engine
14.1 Introduction to InnoDB 14.1.1 InnoDB as the Default MySQL Storage Engine 14.1.2 Checking InnoDB ...
随机推荐
- RedHat搭建IPA-Server
ipa-server是红帽身份验证的一个完整解决方案,上游的开源项目是freeIPA,它本身不提供具体功能,而是整合了389-ds.ipa-server-dns.krb5-server等核心软件包,形 ...
- CenOs安装中文输入法
http://jingyan.baidu.com/album/d8072ac4434666ec95cefda1.html?picindex=2 查看链接
- Java-Android 之应用停止错误
在Android在手机上运行的时候: 经常会出现应用程序停止: 一: 因为触发的方法里面没有传值View 对象,方法报错
- iOS8上本地通知接收不到的问题
需要手动加上这句话 if ([UIApplicationinstancesRespondToSelector:@selector(registerUserNotificationSettings:) ...
- 转:Android软件开发之PreferenceActivity中的组件
本文转于 “雨松MOMO的程序世界” 博客,请务必保留此出处http://xys289187120.blog.51cto.com/3361352/656784 1.PreferenceActivity ...
- Linux系统update-alternatives命令使用
个人博客地址:http://www.cnblogs.com/wdfwolf3/ update-alternatives是ubuntu系统用来进行软件版本切换的命令.比如系统中有几个版本的jdk,把这些 ...
- Fatal error: Uncaught SoapFault exception
Warning: SoapClient::SoapClient() expects parameter 2 to be array, boolean given in login\login.php ...
- ecshop 函数列表大全
lib_time.phpgmtime() P: 获得当前格林威治时间的时间戳 /$0server_timezone() P: 获得服务器的时区 /$0local_mktime($hour = NULL ...
- 创业 CEO:如何选择投资人
欢迎来到「创业 CEO」系列,在这个系列中,我们讨论一个创业者如何教会自己成为一位伟大的 CEO,因为历史上最伟大的创业公司,往往都是由这样的人在领导. AppWorks 成立至今,总共参与投资了 2 ...
- MVVM模式应用 之在ViewModel中使用NavigationService
在ViewModel.cs页面中是不能使用NavigationService,那该怎么实现跳转呢? 其实在ViewModel中实现页面的跳转也很简单,下面的代码: using Microsoft.Ph ...