1、drop、delete和truncate删除数据的区别?

  • drop 是将表所占的空间全部释放掉。
  • delete 语句执行删除是每次从表中删除一行,并且同时将改行的删除操作作为事务记录在日志中保存以便回滚。
  • truncate 则是一次从表中删除所有数据并不把单独的删除操作记录计入日志,所以删除是不能恢复的。删除速度很快。

在删除速度上, drop > truncate > delete 想要删除部分数据用delete,想要删除表用drop。想要保留表但是把数据删除,如果和事务无关就用truncate。

2、MySQL主从原理

从库生成两个线程,一个I/O线程,一个SQL线程;
I/O线程去请求主库的binlog,并将得到的binlog日志写到relay log(中继日志)文件中;
主库会生成一个log dump线程,用来给I/O线程传binlog;
SQL线程,会读取relay log文件中的日志,并解析成具体操作,来实现主从操作的一致,而最终数据一致;

事务