摘要:innodb的primary key就是聚簇索引,其特点是,叶节点上存放着数据,那么当数据超过16k时,怎么办?是不是如下图一样?MyISAM has no clustered index, so the data isn’t physically ordered by any index (it’s in insertion order), but in InnoDB, ...
阅读全文
摘要:网上看到sqlserver会对索引进行选择:即当数据库认为全表扫描会更快时,就不会采用索引进行查询。……那么SQL Server是怎么知道什么时候用索引,什么时候不用索引的呢?SQL Server除了日常维护数据信息外,还维护着数据统计信息。……SQL Server自动维护统计信息,这些统计信息包括数据密度信息以及数据分布信息,这些信息帮助SQL S...
阅读全文
摘要:一个存放记录(row)的page,由page header、page trailer、page body组成。如下图:[2]page的结构详情参看如下:from:http://forge.mysql.com/wiki/MySQL_Internals_InnoDB#InnoDB_Page_StructureHigh-Altitude Picture The chart below shows the...
阅读全文
摘要:在InnoDB中,buffer pool里面的dirty page一方面可以加快数据处理速度,同时也会造成数据的不一致(RAM vs DISK)。本文介绍了dirty page是如何产生,以及InnoDB如何利用redo log如何消除dirty page产生的数据不一致。当事务(Transaction)需要修改某条记录(row)时,InnoDB需要将该数据所在的page从disk读到buffer...
阅读全文
摘要:http://forge.mysql.com/wiki/Mysql_internals http://www.taobaodba.com/html/category/databasehttp://www.innodb.com/doc/innodb_plugin-1.0/innodb-plugin-installation.html
阅读全文
摘要:tablespaceA tablespace consists of multiple files and/or raw disk partitions. (注:如果innodb设置成共享表空间,则所有的元数据,表数据,索引数据,及事务的undo数据都存放在同一个表空间(一个或多个数据文件);也可设置成独享表空间,每个表的数据和索引存放在一个单独的.ibd文件中,该文件包括每个表的表数据,索引数据...
阅读全文
摘要:网上找到一个B+tree的演示程序。demo中是非叶子节点值出现在左边子节点,但有些相关的文章中却说是在右边子节点。这个我想并不重要,总之,b+tree中,所有的key都会在叶节点出现。上传了:http://files.cnblogs.com/Arlen/stx-wxbtreedemo-0.8.3-win32.zip
阅读全文
摘要:InnoDB与MyISAM不同,它实现的是一个行级锁,而非MyISAM的表锁。锁的粒度越大,则发生死锁的概率越小、锁机制开销越小,但并发能力会越低。如果锁的粒度变细,则发生死锁的概率也会增大,锁机制的开销会更大,但是并发能力能提高。表锁是如何实现的呢,以MyISAM为例,是在每个表的结构中加入一个互斥变量记录锁状态,像:struct Table {Row rows[MAXROWS];pthread...
阅读全文
摘要:1.关于innodb的聚簇索引的说明,下面这段话应该比manul更权威:Data rows are stored in the B-tree leaf nodes of a clustered index。 B-tree is organized by primary key or non-null unique key of table, if defined;else, an internal...
阅读全文
摘要:B-tree keysThe B-tree is a very common storage structure, and the subject has been treated ingreat detail in many other publications; therefore, we will only briefly visit theMyISAM B-tree. Those inte...
阅读全文
摘要:[NATIONAL] VARCHAR(M) [CHARACTER SET charset_name] [COLLATE collation_name] A variable-length string. M represents the maximum column length in characters. The range of M is 0 to 65,535. The effective...
阅读全文
摘要:http://files.cnblogs.com/Arlen/04.rar4.3 B树虽然一级或两级索引通常有助于加快查询,但在商用系统中常使用一种更通用的结构。这一通用的数据结构簇称为B树,而最常使用的变体称为B +树。实质上:• B树能自动地保持与数据文件大小相适应的索引层次。• 对所使用的存储块空间进行管理,使每个块的充满程度在半满与全满之间。这样的索引不再需要溢出块...
阅读全文
摘要:一张test的表,字符集采用的latin1。 select to_id from test where to_id='cn象_王';+---------------+| to_id |+---------------+| cn陶_陶 || cn象_王 |+---------------+2 rows in set (0.00 sec)取cn象_王的数据,居然把cn陶_陶的数据也取回来了。针对中文,...
阅读全文
摘要:今天发现新web上出口页面打不开,httpwatch看到是oa登陆引起的问题:现象解释:用户登陆,我们的程序请求oa的passport验证,Oa验证通过后给我们的url加上ticket串,我们的程序截出ticket并尝试写入cookie,(在setcookie的时候写失败了(后面发现其实并非如此)),此时程序重新请求idc/idc_exit,验证模块尝试从cookie中获取ticket串,获取失败...
阅读全文
摘要:mysql中提供了两个函数供 ip地址与32位整数相互转换INET_ATONINET_NTOAselect INET_ATON('127.0.0.1');select INET_NTOA(2130706433);
阅读全文
摘要:锁等待可能发生在mysql服务器上也可能发生在存储引擎中。mysqlserver上的锁:1.表锁:有显式也有隐式的。 显式:使用lock tables创建的就是显式锁,如lock tables tableA read/write可通过show processlist\G查看那些在等待着的线程:**********1.row****id:11user:arlenHost:localhost...St...
阅读全文
摘要:该文会通过一个实际例子中的死锁问题的解决过程,进一步解释innodb的行锁机制最近,在项目开发过程中,碰到了数据库死锁问题,在解决问题的过程中,笔者对MySQL InnoDB引擎锁机制的理解逐步加深。 案例如下: 在使用Show innodb status检查引擎状态时,发现了死锁问题: *** (1) TRANSACTION: TRANSACTION 0 677833455, ACTIV...
阅读全文
摘要:make: Nothing to be done for `all' 解决方法1.这句提示是说明你已经编译好了,而且没有对代码进行任何改动。若想重新编译,可以先删除以前编译产生的目标文件:make clean然后再make2.出现这种情况解决方法:a.make clean 清除安装时留下的文件b.在运行一下ldconfig
阅读全文
摘要:InnoDB实现了以下两种类型的行锁。共享锁(S):允许一个事务去读一行,阻止其他事务获得相同数据集的排他锁。排他锁(X):允许获得排他锁的事务更新数据,阻止其他事务取得相同数据集的共享读锁和排他写锁。另外,为了允许行锁和表锁共存,实现多粒度锁机制,InnoDB还有两种内部使用的意向锁(Intention Locks),这两种意向锁都是表锁。意向共享锁(IS):事务打算给数据行加行共享锁,事...
阅读全文
摘要:为了给高并发情况下的mysql进行更好的优化,有必要了解一下mysql查询更新时的锁表机制。一、概述MySQL有三种锁的级别:页级、表级、行级。MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-level locking),也支持...
阅读全文