innodb表空间
select * from threads limit 1\Gmysql performance_schema
show processlist;
gdb -ex "set paginmation 0" -ex "thread apply all bt" --batch -p $1(进程id)
打印所有线程的进程id(上面的命令打印$pid进程所有线程的堆栈并退出。)
iotop -u mysql
apt-get install gdb
select type,name,thread
线程对应的进程
5.6 show index from 语句是错误的
innodb_index_stats
innodb_table_stats
show engines;
5.5版本默认引擎是innodb
fully ACID
行锁
表空间是逻辑概念ibdata1(共享表空间,默认所有数据都在)
表空间文件
独立表空间(innodb_file_per_table=on 独立表空间)
系统表空间 (最开始只有一个系统表空间change buffer undo 索引信息元数据信息)
undo表空间(from 5.6)
5.7增加一个临时表空间ibtmp1(临时表)
重做日志文件
物理逻辑日志
没有oracle归档重做日志
innodb支不支持裸设备
写入绕过操作系统的缓存 ordirate
mysqlfrm --diagnostic z.frm
.ibd存放数据和索引
清缓存
sysbench
echo 3 > /proc/sys/vm/drop_caches
prepare单线程顺序一个一个写文件 iops并不高
file-rw-ratio读写比例
ibdata1里的表删完空间释放不了
共享表空间和独立表空间性能没什么区别
innodb的ibd文件直接拷过去不能恢复 myisam的可以
innodb有一份索引存在change buffer 存放在共享表空间
如果想把某些表放到存储介质差的盘上呢
create table abc(a int)data directory='/test'
5.6开始支持general表空间(不是系统表空间)
create tablespace ts10 add datafile '/test/ts10.ibd' file_block_size=8192;
select space,name,space_type from innodb_sys_tablespaces;
create table tttt()tablespace=ts10;
create table ooo()tablespace=ts10;一个表空间可以有多个表
默认表空间autoextend 自动扩展
file_block_size就是innodb_page_size
表空间和myisam的关系
用了create tablespace 备份工具能支持吗
单表最大64T?
单个实例的表数量没有限制