通过create database test1 语句创建的数据库,
就是在数据目录下创建了一个 test1 的文件夹,里面再建一个 db.opt 的文件,包含了字符集信息
mysql没用全局的database数据表,所以文件夹就是数据库,删掉数据库是只需把这个文件夹删掉就可以了,拷贝也是一样,,
这样实现比较简单
在innodb的创建表时,
先会在数据库目录创建一个后缀为 frm 的表定义文件, mysql_create_frm,这主要是为C++部分使用的;在C++部分有一套事务,锁,表的处理,在下面的innodb还有一部分
在inndodb之中,之后会在三张系统表中增加相应的元组, sys_tables, sys_columns, sys_indexs,
当在建表时,如果没有指定主键,那么就会把三个系统列rowid, trx_id, rollback_ptr 三个列和表的其它列一起,建一个cluset index,主键是 rowid。并没有像pg那样有专门的表,innodb中表就是索引,如果是指定主键,则是根据主键来建cluset index,所以如果建好表之后,修改别的列为主键时,相当于重新建表了,速度是非常慢的
删除表时,执行的是一个很大的SQL存储过程,