上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 45 下一页
摘要: 阻塞 因为不同锁之间的兼容性关系,所以在有些时刻,一个事务中的锁需要等待另一个事务中的锁释放它所占用的资源。在InnoDB存储引擎的源代码中,用Mutex数据结构来实现锁。在访问资源前需要用mutex_enter函数进行申请,在资源访问或修改完毕后立即执行mutex_exit函数。当一个资源已被一个 阅读全文
posted @ 2017-01-18 11:38 wade&luffy 阅读(1054) 评论(0) 推荐(0) 编辑
摘要: 锁的算法 InnoDB存储引擎有3中行锁的算法设计,分别是: Record Lock总是会去锁住索引记录。如果InnoDB存储引擎表建立的时候没有设置任何一个索引,这时InnoDB存储引擎会使用隐式的主键来进行锁定。 Next-Key Lock是结合了Gap Lock和Record Lock的一种锁 阅读全文
posted @ 2017-01-18 11:08 wade&luffy 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 开发多用户、数据库驱动的应用时,最大的一个难点是:一方面要最大程度地利用数据库的并发访问,另外一方面还要确保每个用户能以一致的方式读取和修改数据。为此就有了锁(locking)机制,这也是数据库系统区别于文件系统的一个关键特性。InnoDB存储引擎较之MySQL数据库的其他存储引擎,在这方面技高一筹 阅读全文
posted @ 2017-01-18 10:36 wade&luffy 阅读(465) 评论(0) 推荐(0) 编辑
摘要: InnoDB存储引擎中自适应哈希索引使用的是散列表(Hash Table)的数据结构。但是散列表不只存在于自适应哈希中,在每个数据库中都存在。设想一个问题,当前我的内存为128G,我怎么得到内存中的某一个被缓存的页呢?内存中查询速度很快,但是也不可能遍历所有内存。这时,对于字典操作,O(1)的散列技 阅读全文
posted @ 2017-01-17 17:10 wade&luffy 阅读(839) 评论(0) 推荐(0) 编辑
摘要: 何时使用索引 并不是在所有的查询条件下出现的列都需要添加索引。对于什么时候添加B+树索引,我的经验是访问表中很少一部分行时,使用B+树索引才有意义。对于性别字段、地区字段、类型字段,它们可取值的范围很小,即低选择性。如: SELECT * FROM student WHERE sex='M' 对于性 阅读全文
posted @ 2017-01-17 15:54 wade&luffy 阅读(787) 评论(0) 推荐(0) 编辑
摘要: B+树索引其本质就是B+树在数据库中的实现,但是B+索引在数据库中有一个特点就是其高扇出性,因此在数据库中,B+树的高度一般都在2~3层,也就是对于查找某一键值的行记录,最多只需要2到3次IO,这倒不错。因为我们知道现在一般的磁盘每秒至少可以做100次IO,2~3次的IO意味着查询时间只需0.02~ 阅读全文
posted @ 2017-01-17 14:33 wade&luffy 阅读(5039) 评论(0) 推荐(0) 编辑
摘要: B+树 B+树和二叉树、平衡二叉树一样,都是经典的数据结构。B+树由B树和索引顺序访问方法(ISAM,是不是很熟悉?对,这也是MyISAM引擎最初参考的数据结构)演化而来,但是在实际使用过程中几乎已经没有使用B树的情况了。 B+树的定义十分复杂,因此只简要地介绍B+树:B+树是为磁盘或其他直接存取辅 阅读全文
posted @ 2017-01-17 13:56 wade&luffy 阅读(87143) 评论(12) 推荐(6) 编辑
摘要: 索引是应用程序设计和开发的一个重要方面。如果索引太多,应用的性能可能会受到影响;如果索引太少,对查询性能又会产生影响。要找到一个合适的平衡点,这对应用的性能至关重要。 如果知道数据的使用,从一开始就应该在需要处添加索引。开发人员对于数据库的工作往往停留在应用的层面,比如编写SQL语句、存储过程之类, 阅读全文
posted @ 2017-01-17 13:41 wade&luffy 阅读(2546) 评论(0) 推荐(0) 编辑
摘要: 分区功能并不是在存储引擎层完成的,因此不只有InnoDB存储引擎支持分区,常见的存储引擎MyISAM、NDB等都支持。但也并不是所有的存储引擎都支持,如CSV、FEDERATED、MERGE等就不支持。在使用分区功能前,应该了解所选择的存储引擎对于分区的支持。 MySQL数据库在5.1版本时添加了对 阅读全文
posted @ 2017-01-17 11:37 wade&luffy 阅读(2189) 评论(0) 推荐(0) 编辑
摘要: 视图(View)是一个命名的虚表,它由一个查询来定义,可以当做表使用。与持久表(permanent table)不同的是,视图中的数据没有物理表现形式。 视图的作用 视图在数据库中发挥着重要的作用。视图的主要用途之一是被用做一个抽象装置,特别是对于一些应用程序,程序本身不需要关心基表(base ta 阅读全文
posted @ 2017-01-17 10:13 wade&luffy 阅读(668) 评论(0) 推荐(0) 编辑
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 45 下一页