上一页 1 ··· 7 8 9 10 11 12 下一页
摘要: 当使用 insert...select...进行记录的插入时,如果select的表是innodb类型的,不论insert的表是什么类型的表,都会对select的表的纪录进行锁定。对于那些从oracle迁移过来的应用,需要特别的注意,因为oracle并不存在类似的问题,所以在oracle的应用中insert...select...操作非常的常见。例如:有时候会对比较多的纪录进行统计分析,然后将统计的中间结果插入到另外一个表,这样的操作因为进行的非常少,所以可能并没有设置相应的索引。如果迁移到mysql数据库后不进行相应的调整,那么在进行这个操作期间,对需要select的表实际上是进行的全表扫.. 阅读全文
posted @ 2014-03-14 16:44 yayun 阅读(1554) 评论(0) 推荐(0) 编辑
摘要: 1.对于 MyISAM 类型的表,可以通过以下方式快速的导入大量的数据。ALTER TABLE tblname DISABLE KEYS;LOAD DATA LOCAL INFILE '/usr/share/dict/words' INTO TABLE source_words(word);ALTER TABLE tblname ENABLE KEYS;这两个命令用来打开或者关闭 Myisam 表非唯一索引的更新。在导入大量的数据到一个非空的 MyISAM 表时,通过设置这两个命令,可以提高导入的效率。对于导入大量数据到一个空的 MyISAM 表,默认就是先导入数据然后才创建索 阅读全文
posted @ 2014-03-14 11:42 yayun 阅读(1731) 评论(0) 推荐(0) 编辑
摘要: innodb_flush_method这个参数控制着innodb数据文件及redo log的打开、刷写模式,对于这个参数,文档上是这样描述的:有三个值:fdatasync(默认),O_DSYNC,O_DIRECT默认是fdatasync,调用fsync()去刷数据文件与redo log的buffer为O_DSYNC时,innodb会使用O_SYNC方式打开和刷写redo log,使用fsync()刷写数据文件为O_DIRECT时,innodb使用O_DIRECT打开数据文件,使用fsync()刷写数据文件跟redo log首先文件的写操作包括三步:open,write,flush上面最常提到的 阅读全文
posted @ 2014-03-12 10:49 yayun 阅读(1559) 评论(0) 推荐(0) 编辑
摘要: 背景有同学讨论到MySQL 5.5下给大表加主键时会锁住读的问题,怀疑与fast index creation有关,这里简单说明下。对照现象为了说明这个问题的原因,有兴趣的同学可以做对比实验。1) 在给InnoDB表创建主键期间,会锁住该表上的读数据2)但是同样的表执行删除主键期间,不会锁住该表上的读操作—-这说明与是否fast index creation无关,因为这两个操作在数据层面的行为应该是类似的,实际上,创建/删除主键都必须copy data。3)在创建主键期间,会锁住该表上执行的show create table—-用1、3的现象可以猜测出,实际上与meta data lock有关 阅读全文
posted @ 2014-03-12 09:40 yayun 阅读(618) 评论(0) 推荐(0) 编辑
摘要: 前几天写过update或者delete忘加where条件的数据恢复。今天介绍一款开源的MySQL数据库InnoDB数据恢复工具:innodb-tools,它通过从原始数据文件中提取表的行记录,实现从丢失的或者被毁坏的MySQL表中恢复数据。例如,当你不小心执行DROP TABLE、TRUNCATE ... 阅读全文
posted @ 2014-03-07 17:10 yayun 阅读(7120) 评论(1) 推荐(1) 编辑
摘要: MySQL支持插件式存储引擎,常用的存储引擎则是MyISAM和InnoDB,通常在OLTP(Online Transaction Processing 在线事务处理)中,我们选择使用InnoDB,所以弄清楚Innodb体系架构,有助于我们更深刻的理解innodb的工作原理,以及更好的使用innodb,以及优化。从上图大致可以看到innodb有多个内存块,可以认为这些内存块组成了一个大的内存池,负责如下工作:1.维护所有进程/线程需要访问的多个内部数据结构。2.缓存磁盘上的数据,方便快速的读取,同时在对磁盘文件的数据修改之前在这里缓存。3.重做日志(redo log)缓冲一.后台线程的主要作用是 阅读全文
posted @ 2014-03-06 23:16 yayun 阅读(1728) 评论(0) 推荐(1) 编辑
摘要: 前不久去面试,被问到Innodb引擎的表如何改数据库名,当时我也只回答了MyISAM改如何操作,被一些细节问题打败,真是操蛋。如果表示MyISAM那么可以直接去到数据库目录mv就可以。Innodb完全不行,自己测试过,会提示相关表不存在。第一种方法:RENAME database olddbname TO newdbname这个是5.1.7到5.1.23版本可以用的,但是官方不推荐,会有丢失数据的危险第二种方法:1.创建需要改成新名的数据库。2.mysqldum 导出要改名的数据库3.删除原来的旧库(确定是否真的需要)当然这种方法虽然安全,但是如果数据量大,会比较耗时,哎,当时连这种方法都没有 阅读全文
posted @ 2014-03-06 17:08 yayun 阅读(76538) 评论(2) 推荐(5) 编辑
摘要: 本文来自david大神的博客,innodb技术内幕的作者。http://insidemysql.blog.163.com/blog/static/202834042201385190333/MySQL数据库的成功离不开其replicaiton,相对于Oracle DG和Microsoft SQL Server Log Shipping来说,其简单易上手,基本上1,2分钟内根据手册就能完成环境的搭建。然而,随着使用的深入,replication自身的问题会慢慢显露,其中非crash safe的特性使得许多DBA感到头疼,甚至不能理解其所发问题的原因。简单来说,crash-safe replica 阅读全文
posted @ 2014-03-06 11:13 yayun 阅读(1056) 评论(0) 推荐(0) 编辑
摘要: 先提个问题:如何不重启mysqld,且没有权限修改用户账号和权限的情况下,如何重新设置root密码?不知道没关系,在此之前我也是不知道如何操作的,先看看下面的几种重置root密码的方法。1、skip-grant-tables我们常用的方法是使用skip-grant-tables选项,mysqld s... 阅读全文
posted @ 2014-03-05 17:35 yayun 阅读(1523) 评论(2) 推荐(1) 编辑
摘要: 一) I/O调度程序的总结 1) 当向设备写入数据块或是从设备读出数据块时,请求都被安置在一个队列中等待完成. 2) 每个块设备都有它自己的队列. 3) I/O调度程序负责维护这些队列的顺序,以更有效地利用介质.I/O调度程序将无序的I/O操作变为有序的I/O操作. 4) 内核必须首先确定队列中一共 阅读全文
posted @ 2014-03-05 12:48 yayun 阅读(2735) 评论(0) 推荐(0) 编辑
上一页 1 ··· 7 8 9 10 11 12 下一页