随笔分类 -  数据库

摘要:MySQL默认编码是latin1mysql> show variables like 'character%'; +--------------------------+--------------------------+ | Variable_name | Value | +--------------------------+--------------------------+ | character_set_client | latin1 | | character_se... 阅读全文
posted @ 2012-09-11 14:08 Jack204 阅读(22513) 评论(0) 推荐(0)
摘要:1 insert和delete在并发中的控制是怎么样的?2 redo和undo log在各种恢复和备份中所起到的作用?-------------------------------------------------------手表收藏:http://item.taobao.com/item.htm?spm=a230r.1.10.78&id=14097241644&_u=uh04hr27412 阅读全文
posted @ 2012-08-26 19:34 Jack204 阅读(222) 评论(0) 推荐(0)
摘要:很多同学并不是数据库的专家,面试如果问到数据库并没有太多信心,面试数据库是有窍门的,因为数据库是一个庞大的系统,面试的时候没有办法考得很深,而且有一些题目是被反复问到的,大家可以提前准备。在这里我只提供答题思路,一来可以避免大家在面试的时候答案比较雷同,二来可以通过准备答案的过程学习些数据库的知识。 回答数据库的问题,需要有一定的高度,因为数据库是一个整体,牵一发而动全身,因此任何一个小的知识点都会牵动着很多相关的知识,回答问题的时候,需要站在一个高度上去分析,并把相关的内容以及联系都讲清楚,最重要的是要展现你的答题思路以及开放性的思维。 1. 数据库如何避免死锁 首先从数据库避免... 阅读全文
posted @ 2012-08-26 15:01 Jack204 阅读(1612) 评论(0) 推荐(1)
摘要:一、B树 1、B树的定义B树是一种平衡的多分树,通常我们说m阶的B树,它必须满足如下条件:(1)每个结点至多有m个子结点;(2)每个非根节点所包含的关键字个数 j 满足:┌m/2┐ - 1 <= j <= m - 1;(3)若根结点不是叶子结点,则至少有两个子结点;(4)所有的叶结点在同一层;(5)有k个子结点的非根结点恰好包含k-1个关键码。2、B树的查找B树上的查找是一个顺指针查找结点和在结点内的关键码中查找交叉进行的过程。从根结点开始,在结点包含的关键码中查找给定的关键码,找到则查找成功;否则确定给定关键码可能在的子树,重复上面的操作,直到查找成功或者指针为空为止。下图显示了 阅读全文
posted @ 2012-08-22 16:57 Jack204 阅读(6156) 评论(1) 推荐(0)
摘要:TableA+----+------+| c1 | c2 |+----+------+| 3 | NULL || 4 | NULL || 5 | NULL || 11 | 12 || 12 | 13 |+----+------+一 在c1上无索引,innodb_locks_unsafe_for_binlog开关被关闭。1 1.0 select * from ta where c1=11在read_repatable isolation level的时候,另一个session是可以随便插入的任何值。 1.1 如果是select * from ta where c1=11 lock in shar 阅读全文
posted @ 2012-08-20 18:25 Jack204 阅读(4126) 评论(0) 推荐(0)
摘要:打开开关innodb_lock_monitor用来查看一条语句执行的时候,使用命令show engine innodb status对系统中的lock信息。开启mysql> use marketingDatabase changedmysql>mysql> create table innodb_lock_monitor(x int) engine=innodb;Query OK, 0 rows affected (0.08 sec)mysql> exitBye关闭mysql> use marketingReading table information for 阅读全文
posted @ 2012-08-20 15:43 Jack204 阅读(11021) 评论(0) 推荐(1)
摘要:本文转自:http://www.cnblogs.com/lovexinsky/archive/2012/03/09/2387583.html在实际的工作环境下,许多人会遇到海量数据这个复杂而艰巨的问题,它的主要难点有以下几个方面:一、数据量过大,数据中什么情况都可能存在。如果说有10条数据,那么大不了每条去逐一检查,人为处理,如果有上百条数据,也可以考虑,如果数据上到千万级别,甚至过亿,那不是手工能解决的了,必须通过工具或者程序进行处理,尤其海量的数据中,什么情况都可能存在,例如,数据中某处格式出了问题,尤其在程序处理时,前面还能正常处理,突然到了某个地方问题出现了,程序终止了。二、软硬件要求 阅读全文
posted @ 2012-07-31 19:52 Jack204 阅读(588) 评论(0) 推荐(0)
摘要:start with,connect by主要目的:从表中取出树状数据。可以假想成表中存成的各条数据是分别是树中的一个结点。主要用法:select ... start with initial-condition connect by nocycle recurse-conditionselect ... connect by recurse-conditionselect ... start with initial-condition connect by nocycle recurse-conditionselect ... connect by recurse-conditionThe 阅读全文
posted @ 2012-07-12 11:37 Jack204 阅读(7202) 评论(0) 推荐(0)
摘要:如果在transaction1(Tr1)进行一个select * from table1 where id < 4 lock in share mode.这里会在table1上加一个next_key lock(间隙锁),基本原理是什么呢?大致是这样的,内存中有一个lock hash。是一个key(类似于tableid+pageid+offset)到value(所加的锁)--- 这就是行锁的原理。所以 id<4的话,会给0 1 2 4(假设当前数据库没有3)加上行锁,这样就保证了不会出现插入id=3.5这种事情的发生。+++++++++++++++++++++++++++++++++ 阅读全文
posted @ 2012-07-07 23:52 Jack204 阅读(2010) 评论(0) 推荐(0)
摘要:(分析的过程比分析的结果重要的多)不涉及join的cost计算==================================================================1 数据库中可以提供给我们的可供参考的参数:表:cardinality_table(表有多少条record), npages_table(表有多少页),列:cardinality_column(列中不同值的数目),HIGH2KEY/LOW2KEY(因为最大值可能是null,最小值可能是0),frequencies(某个值在此列中出现的比率比如100个数字,有10个0,那么0的频率是0.1)。索引:nle 阅读全文
posted @ 2012-07-07 23:35 Jack204 阅读(1071) 评论(0) 推荐(0)
摘要:1 优化方面2 buffer pool的使用3 sql查询的cost计算 阅读全文
posted @ 2012-06-24 11:09 Jack204 阅读(188) 评论(0) 推荐(0)
摘要:"filesort"接收要排序的table和要排序的fields,根据sortbuff_size的设定,申请尽量大的一个sortbuff用来存放即将被排序的keys。然后进入"find_all_keys"函数,因为sortbuff大小有限,主要排序思路如find_all_keys的注释: while (get_next_sortkey()) { if (no free space in sort_keys buffers) { sort sort_keys buffer; dump sorted sequence to 't... 阅读全文
posted @ 2012-06-23 21:18 Jack204 阅读(447) 评论(0) 推荐(0)
摘要:就像李硕师兄跟我讲的,学习mysql某一部分代码的所应达到的程度是:1你讲出来,别人能听懂,这才证明你自己理解了2能分析出来优势和劣势,在各种情况下的表现学习mysql某一部分代码的方法是:1 学习代码的原理2 从这部分原理考虑到对整个系统的影响3 去分析实际的例子 阅读全文
posted @ 2012-06-14 00:08 Jack204 阅读(287) 评论(0) 推荐(0)
摘要:InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION);二是采用了行级锁。行级锁与表级锁本来就有许多不同之处,另外,事务的引入也带来了一些新问题。下面我们先介绍一点背景知识,然后详细讨论InnoDB的锁问题。背景知识1.事务(Transaction)及其ACID属性事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性。l 原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。l 一致性(Consistent):在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都 阅读全文
posted @ 2012-06-09 11:19 Jack204 阅读(18251) 评论(1) 推荐(2)
摘要:首先,在mysql存储过程出现的同时,用户权限也增加了5种,其中和存储过程有关的权限有 三种: ALTER ROUTINE 编辑或删除存储过程 CREATE ROUTINE 建立存储过程 EXECUTE 运行存储过程在使用GRANT创建用户的时候分配这三种权限。 存储过程在运行的时候默认是使用建立者的权限运行的。 需要注意的是在一个用户拥有建立存储过程的权限时,如果其没有对于select、update或delete等权限的话,虽然操作数据的存储过程可以建立,但调用存储过程的话仍是无法成功的,会返回权限错误,就算拥有运行存储过程的权限也一样。所以,如果有人给你建立了一个没有select、upda 阅读全文
posted @ 2012-06-06 19:46 Jack204 阅读(9332) 评论(0) 推荐(0)