![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
oliverpeng
这个作者很懒,什么都没留下…
展开
-
关于MySQL Innodb log 日志的一点收获
最近了解Innodb 日志,弄明白了两个问题。 首先Innodb log的功能,有两种log: undo log 和 redo log. undo log实现事物的回滚(roll back transaction). redo log用来实现灾难恢复(crash recovery).突然断电会导致Innodb表空间(Table space)中的数据没有被更新到磁盘上,通过重新执行...2009-09-11 22:52:00 · 89 阅读 · 0 评论 -
MyISAM 和 InnoDB索引的区别
MyISAM和InnoDB的索引在实现上有以下不同: 1 MyISAM只把索引载入内存,数据缓存依赖于操作系统,InnoDB把索引和数据都载入内存缓冲 2 MyISAM数据库中的数据是按照插入的顺序保存,在每个索引节点中保存对应的数据行的地址,理论上说主键索引和其他索引是一样的,InnoDB数据库中的数据和主键节点保存在一起,所有其他索引节点中保存的是主键索引的值。 3 对于字符...2009-11-26 03:56:24 · 131 阅读 · 0 评论 -
MySQL 和Swap Memory
Swap memory是操作系统在物理内存不够的时候使用磁盘保存一部分虚拟内存空间,具体哪部分内存被交换到磁盘对于应用程序来说是完全不知道的,所以一旦MySQL所使用的内存空间被交换到磁盘,会严重影响MySQL的性能. 在GNU/Linux操作系统,你可以通过vmstat察看是否有Swap Memory 在被使用. 如果发现操作系统已经开始使用Swap Memory,建议以下两种方法来...2009-12-07 22:33:37 · 117 阅读 · 0 评论 -
Cardinality对表Join的影响
如果你执行SHOW INDEX FROM TABLE_NAME察看所引信息,中间会有一列Cardinality,MySQL在解析多重Join的时候会根据Cardinality的信息决定选择什么路径来执行Join,这种算法的前提条件是索引数据时很平均分配的,但如果索引中的数据非常不均衡,会导致MySQL做出错误的选择。 下面是一个完整的例子: 首先创建三个测试表: CREATE TABL...2010-05-21 03:59:14 · 220 阅读 · 0 评论 -
如何释放已删除的InnoDB磁盘空间
Innodb数据库对于已经删除的数据只是标记为删除,并不真正释放所占用的磁盘空间,这就导致InnoDB数据库文件不断增长。如果想彻底释放这些已经删除的数据,需要把数据库导出,删除InnoDB数据库文件,然后再倒入。 下面是基本的步骤: 1 使用mysqldump命令将InnoDB数据库导出 2 停止MySQL 3 删除所有InnoDB数据库文件和日志 4 启动MySQL并自...2010-07-06 03:01:12 · 297 阅读 · 0 评论