番禺网站建设培训,萧山网站建设xssem,廊坊首页霸屏排名优化,wordpress页面音乐系统数据表空间: 系统表空间可以有一个或多个数据文件。默认情况下#xff0c;会在数据目录中创建一个名为ibdata1的系统表空间数据文件 。系统表空间数据文件的大小和数量由innodb_data_file_path启动选项定义。
mysql show variables like %innodb_data%; ------------…系统数据表空间: 系统表空间可以有一个或多个数据文件。默认情况下会在数据目录中创建一个名为ibdata1的系统表空间数据文件 。系统表空间数据文件的大小和数量由innodb_data_file_path启动选项定义。
mysql show variables like %innodb_data%; ----------------------------------------------- | Variable_name | Value | ----------------------------------------------- | innodb_data_file_path | ibdata1:12M:autoextend | | innodb_data_home_dir | | ----------------------------------------------- 2 rows in set (0.02 sec)
它里面存储的有
InnoDB 表元数据 doublewrite buffer change buffer undo logs
1.InnoDB 表元数据 只读的表存储对象的相关信息如占用空间列的缺省值约束信息用户名权限审计信息等 虽 然 InnoDB 表 元 数 据 通 过 information_schema.tables 来 读 取 但 是 实 际 上 information_schema 是一个虚拟数据库并不物理存在这些数据真正存放的地方就是 ibdata1
2.双写缓冲区 Double write buffer; Innodb写入数据默认是16k/pages为一个单位写入而磁盘是4k/page一个单位为了防止写入一半断电无法恢复数据的情况发生引入了double writer buffer机制double write buffer是一段连续空间大小2M(128 page)数据写入的时候先写到doublewrite空间然后再写入到磁盘如果发生写入了一个page一半的时候断电恢复后会自动从doublewrite中恢复 3.插入缓冲区INSERT BUFFER针对辅助索引(非unique)插入数据的时候先将插入的数据在buffer中根据辅助索引叶子节点的Page_no排序而后按照Page_no分批次插入提高性能 4.undo log用于记录事物变更前的状态如果未commit,其他session可以查看到变更前状态 用户数据表空间 由 innodb_file_per_table 参数定义。启用后innodb_file_per_table1InnoDB 可以在 file-per-table 表空间中创建表存储在表名相同的ibd和frm文件中,这样新创建的数据库表都单独的表空间文件。该参数在 MySQL 5.6.7 及更高版本已经默认启用了。
临时表空间 非压缩的、用户创建的临时表和磁盘上产生的内部临时表都是存储在共享的临时表空间存储的可以通过配置参数 innodb_temp_data_file_path 来定义临时表空间数据文件的路径、名称、大小和属性如果没有指定默认是在数据目录下创建一个名为 ibtmp1的大于 12M 的自动扩展数据文件。
mysql show variables like %innodb_temp%; --------------------------------------------------- | Variable_name | Value | --------------------------------------------------- | innodb_temp_data_file_path | ibtmp1:12M:autoextend | --------------------------------------------------- 1 row in set (0.01 sec)
mysql show variables like %innodb_tmp%; ---------------------- | Variable_name | Value | ---------------------- | innodb_tmpdir | | ---------------------- 1 row in set (0.00 sec) 那MYSQL用户可以自己创建自定义的表空间吗可以
CREATE TABLESPACE myspacetest ADD DATAFILE myspacetest.ibd ENGINEInnoDB; CREATE TABLE mytable ( id INT PRIMARY KEY ) TABLESPACE myspacetest; mysql insert into mytable value(34); Query OK, 1 row affected (0.01 sec)
查看已存在的表空间和对于的文件 mysql select TABLESPACE_NAME,FILE_NAME from information_schema.FILES; ----------------------------------------------------------------- | TABLESPACE_NAME | FILE_NAME | ----------------------------------------------------------------- | innodb_system | ./ibdata1 | | innodb_file_per_table_30 | ./mysql/Course.ibd | | innodb_file_per_table_32 | ./mysql/SC.ibd | | innodb_file_per_table_31 | ./mysql/Student.ibd | | innodb_file_per_table_20 | ./mysql/engine_cost.ibd | | innodb_file_per_table_18 | ./mysql/gtid_executed.ibd | | innodb_file_per_table_5 | ./mysql/help_category.ibd | | innodb_file_per_table_7 | ./mysql/help_keyword.ibd | | innodb_file_per_table_6 | ./mysql/help_relation.ibd | | innodb_file_per_table_4 | ./mysql/help_topic.ibd | | innodb_file_per_table_14 | ./mysql/innodb_index_stats.ibd | | innodb_file_per_table_13 | ./mysql/innodb_table_stats.ibd | | innodb_file_per_table_2 | ./mysql/plugin.ibd | | innodb_file_per_table_19 | ./mysql/server_cost.ibd | | innodb_file_per_table_3 | ./mysql/servers.ibd | | innodb_file_per_table_16 | ./mysql/slave_master_info.ibd | | innodb_file_per_table_15 | ./mysql/slave_relay_log_info.ibd | | innodb_file_per_table_17 | ./mysql/slave_worker_info.ibd | | innodb_file_per_table_9 | ./mysql/time_zone.ibd | | innodb_file_per_table_12 | ./mysql/time_zone_leap_second.ibd | | innodb_file_per_table_8 | ./mysql/time_zone_name.ibd | | innodb_file_per_table_10 | ./mysql/time_zone_transition.ibd | | innodb_file_per_table_11 | ./mysql/time_zone_transition_type.ibd | | innodb_file_per_table_38 | ./mytest/t1.ibd | | innodb_file_per_table_21 | ./sys/sys_config.ibd | | innodb_temporary | ./ibtmp1 | | innodb_file_per_table_43 | ./mysql/employee.ibd | | innodb_file_per_table_44 | ./mysql/employee1.ibd | | myspacetest | ./myspacetest.ibd | -----------------------------------------------------------------
那MYSQL可以在系统表空间里创建表吗可以实际上innodb_file_per_table没打开的情况下默认会把表建在ibdata1里 mysql CREATE TABLE mytable1 ( id INT PRIMARY KEY ) TABLESPACE innodb_system; Query OK, 0 rows affected (0.01 sec)
mysql insert into mytable1 values(23); Query OK, 1 row affected (0.00 sec)