自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

记录成长之路

我@淘宝的日子

  • 博客(31)
  • 收藏
  • 关注

原创 MySQL源代码几个主要文件夹

MYSQL版本:5.1.54主要文件夹:1.BUILD:编译和安装脚本目录,大部分以compile开头的文件,包括不同处理器环境下的编译shell,例如compile-pentium64-debug:#! /bin/shpath=`dirname $0`set -- "$@" --with-debug=full. "$path/SETUP.sh"extra_flags="$pentium64_cflags $debug_cflags"extra_configs="$pentium_configs $debu

2010-12-29 20:24:00 1367 1

转载 MySQL锁概述(转载)

转载自:http://www.mysqlpub.com/forum.php?mod=viewthread&tid=5383&extra=page%3D101 MySQL锁概述02 MyISAM表锁03 InnoDB锁问题04 InnoDB行锁实现方式05 间隙锁(Next-Key锁)06 恢复和复制的需要,对InnoDB锁机制的影响07 InnoDB在不同隔离级别下的一致性读及锁的差异08 关于死锁

2010-12-27 13:42:00 1167

转载 Mysql5.5

<br />转载自:http://www.mysqlpub.com/forum.php?mod=redirect&tid=18137&goto=lastpost#lastpost<br />///////////////////////////////////////////////////////////<br />12月16日,甲骨文公司宣布,MySQL 5.5全面上市,这突出显示了甲骨文在兑现为MySQL用户提供创新的承诺。MySQL 5.5的功能得到了显著增强,使用户能跨Windows、Linux、

2010-12-27 11:20:00 524

原创 下周学习计划

<br />本周主要对MySQL的存储过程、准备语句、游标、触发器、查询缓存等高级特性做了一些了解,并进行了一些实际操作测试,下周将开始着手阅读代码。<br />阅读代码版本:5.1<br />书籍:《深入理解MySQL》第三章<br /> 

2010-12-26 22:25:00 1041

原创 MySQL笔记(MYSQL准备语句)

MySQL支持准备语句,即在执行真正的查询前,将查询的模式先发送到服务器进行解析,将解析和优化的结果保存下来,在一些编程库中支持这种功能,通过准备语句可以很高校的在客户端和服务器端进行数据发送。准备语句中,将?作为参数,例如:INSERT INTO people(last_name,first_name) values(?,?);MYsql将把一个状态句柄发送给客户端,客户端根据状态句柄把每个问号对应的值发送到服务器执行查询,具体方式取决与编程语言准备语句具有以下优点:1.只需解析一

2010-12-25 19:59:00 636

原创 MySQL游标

<br /><br />MySQL中的游标仅在存储过程中被支持,只读且不可滚动,使用光标可以迭代每一行结果,并把结果提取到变量中以做进一步处理。<br />游标是在临时表上进行操作的,其语法如下所示:<br /> <br />DECLARE cursor_name CURSOR FOR select_statement<br />这个语句声明一个光标。也可以在子程序中定义多个光标,但是一个块中的每一个光标必须有唯一的名字。<br />SELECT语句不能有INTO子句。<br /> <br />OPEN c

2010-12-25 16:21:00 1400

转载 MySQL事件(ZZ)

<br /><br />CREATE EVENT<br />CREATE EVENT [IF NOT EXISTS] event_name<br />    ON SCHEDULE schedule<br />    [ON COMPLETION [NOT] PRESERVE]<br />    [ENABLE | DISABLE]<br />    [COMMENT 'comment']<br />    DO sql_statement;<br />schedule:<br />    AT times

2010-12-25 15:11:00 1920 1

原创 MySQL笔记(MYSQL触发器)

<br /><br /> <br />当执行delete、update或insert操作时,可以使用触发器来触发某些操作。<br /> <br />创建触发器:<br />CREATE TRIGGER trigger_name trigger_time trigger_event   ON tbl_name <br /> <br />FOR EACH ROW trigger_stmt<br /> <br />其中 trigger_name是触发器名,<br />trigger_time:BEFORE,AFT

2010-12-25 14:56:00 15419

转载 MySQL InnoDB vs PostgreSQL (转载)

<br />转载自:http://wangyuanzju.blog.163.com/blog/static/13029200799101140359/<br /> <br />多版本并发控制技术被很多数据库或存储引擎采用,如Oracle,MS SQL Server 2005+, PostgreSQL, Firebird, InnoDB, Falcon, PBXT, Maria等等。新的数据库存储引擎,几乎毫无例外的使用多版本而不是单版本加锁的方法实现并发控制,可以说多版本已经成为未来的发展趋势。<br />

2010-12-24 15:13:00 1829

原创 MYSQL笔记(存储程序)

<br /><br /> <br />存储程序即将SQL语句存储在服务器上,客户端无需重新发布单独语句。<br />遵循的语法:SQL2003<br />前提:需要在MYSQL数据库中有proc表,该表在安装MYSQL过程中创建<br />权限:<br />1.创建存储子程序:CREATE ROUTINE权限<br />2.提醒或移除子程序:ALTER ROUTINE权限<br />3.执行子程序:EXECUTE权限<br />一个子程序与特定的数据库相联系,在存储子程序内USE语句是不允许的。<br />

2010-12-22 22:58:00 567

转载 25条有用的SSH命令(ZZ)

SSH是一个非常伟大的工具,如果你要在互联网上远程连接到服务器,那么SSH无疑是最佳的候选。下面是通过网络投票选出的25个最佳SSH命令,你必须牢记于心。  1、复制SSH密钥到目标主机,开启无密码SSH登录  ssh-copy-id user@host  如果还没有密钥,请使用ssh-keygen命令生成。  2、从某主机的80端口开启到本地主机2001端口的 ssh 隧道  ssh -N -L2001:localhost:80 somemachine  现在你可以直接在浏览器中输

2010-12-22 15:52:00 702

原创 MYSQL笔记(MySQL查询缓存)

<br /><br />      查询缓存保存了完整的SELECT结果集;这样当一个相同的查询到达时,可服务器可以跳过解析、优化、执行等阶段,直接把结果返回给客户端,但某种意义上讲,查询缓存实际上修改了应用程序请求的语义,例如,即使在LOCK TABLES的情况下,查询也能被缓存下来。<br />     在服务器端维护了一个查找表,查找的键是查询文本、数据库和客户端协议版本及其他影响实际查询结果的因素,综合起来的哈希值,也就是说,只要客户端的查询语句有丝毫的差异,都不会命中缓存,或者查询语句相同,但不同

2010-12-21 22:58:00 791

原创 下周MySQL学习计划安排

<br />     本周主要对MYSQL的查询优化模块有了大致的了解,并进行了一些实验。MYSQL优化器在接受到规范化的解析树后,将根据一些预定义的规则,从搜索空间里找到最优方案,其评价的单位为一个文件页面,即以随机访问页面数来评价。<br />     但需要注意的是,优化器并不总是能选出最优方案,有时候,当搜索空间太大时,优化器会走某种捷径,但可能丢弃好的方案。你可以手动的设置某些提示语句(见前文)来对优化进行控制。另外,优化器无法理解人的思想,有时候可能需要对源代码进行修改,来适应需求!<br />

2010-12-19 22:07:00 1058

原创 MYSQL笔记(控制优化器的行为)

<br /><br />如果不满意MYSQL提供的优化方案,可以使用一些查询提示来控制优化器的行为<br />1.HIGH_PRIORITY和LOW_PRIORITY<br />决定访问同一个表的语句相对与其他语句的优先级,根据这两个提示服务器对访问表的队列进行处理,在有表锁的存储过程中有效,但在有细粒度锁或者并发控制的存储引擎上无效<br />2.DELAYED<br />应用于INSERT和UPDATE,语句立刻返回并将待插入的列放入缓冲区,在表空闲时插入。<br />3.STRAIGHT_JOIN<b

2010-12-18 18:33:00 600

原创 MYSQL笔记(查询优化续3,特定类型的优化建议)

<br /><br />count查询<br />对于MYISAM中的SQL:<br />SELECT count(*) from city WHERE id > 5;<br />改写为:<br />SELECT (SELECT COUNT(*) FROM city) - count(*) FROM city where id <=5<br />采用否定条件,在子查询中的count将会被MYISAM优化为一个常量<br />另外在优化count时可以采用覆盖索引或是外部缓存系统等等方法<br /> <br

2010-12-18 18:30:00 545

原创 MYSQL笔记(查询优化续2--查询优化限制5.1版本)

<br /><br /> <br />1.对子查询的优化可能会很糟糕,例如where 子句中的IN查询,优化器会将IN中的子查询与外表进行联系,可以使用联接或者用group_concat来手动生成IN中的列表<br />2.对union的限制,一些外部条件例如limit、order by等有时不会被“下推”到UNION的内部,例如,对两个表进行union,并进行limit,mysql会首先把这两个表都读入临时表,再进行limit。<br />3.索引合并优化,索引合并算法使查询可以使用表的多个索引,在MYS

2010-12-16 22:57:00 455

原创 MySQL笔记(查询优化续1)

<br /><br /> <br />在MYSQL中,提供给优化器使用的统计数据是由存储引擎提供,例如表或索引的页面数量、键和行的长度等信息。<br /> <br />由优化器产生的执行计划是一个树形结构,用于指导执行引擎产生结果,其结构为一个左深度树.<br />如:<br />               join<br />          join   tbl4<br />    join  tbl3<br />tbl1 tbl2<br /> <br /> <br />MYSQL联接优化器是优化器

2010-12-16 00:45:00 514

原创 MySQL笔记(查询优化)

查询性能优化基本原则:优化数据访问一些典型的错误包括:提取了超过需要的行、多表联接时提取所有列或提取所有的列(select * 可能会造成覆盖索引这样的优化手段失效)MySQL中,最简单的开销指标包括:1.执行时间2.检查的行数3.返回的行数---通过使用索引,在explain时可以减少处理的行数---使用覆盖索引来避免访问行重构查询1,使用分治法来处理查询,每次只执行查询的一小部分,以减少受影响的行数2,分解联接,将一个多表查询分解成多个单个查询,然后在应用程序端实现联接操作。查询过程:1.客户端发送查询

2010-12-12 22:22:00 737

转载 linux下线程优先级设定

<br />POSIX标准指定了三种调度策略:先入先出策略 (SCHED_FIFO)、循环策略 (SCHED_RR) 和自定义策略 (SCHED_OTHER)。SCHED_FIFO 是基于队列的调度程序,对于每个优先级都会使用不同的队列。SCHED_RR 与 FIFO 相似,不同的是前者的每个线程都有一个执行时间配额。<br />SCHED_FIFO 和 SCHED_RR 是对 POSIX Realtime 的扩展。SCHED_OTHER 是缺省的调度策略。<br /><br /><br />    POS

2010-12-10 15:15:00 1758

原创 MySQL笔记(高效的ALTER TABLE)

<br /><br />在使用alter table进行表修改时,可能会引起很大的消耗,比如会新建一个空表,并进行数据转储,再删除旧表,而当表很大或者有许多索引时,将需要更大的代价,<br />alter table可以使用ALTER COLUMN、MODIFY COLUMN、CHANGE COLUMN来修改列<br />ALTER COLUMN:用于指定列的新默认值,或删除旧的默认值。如果旧的默认值被删除同时列值为NULL,则新的默认值为NULL。如果列值不能为NULL,MySQL会指定一个默认值;<br

2010-12-09 23:14:00 2623 1

原创 近期学习计划安排

手头琐事一堆,索性还算是步入正轨,也可按照计划来做些想做的事情。上周主要学习了一些MySQL索引相关的知识,包括1.各种类型索引的大概了解2.InnoDB的聚集索引3.索引排序及维护等索引在优化数据库查询中具有极大的作用,但糟糕的设计可能会导致性能不升反降,MySQL在不同的存储引擎中,具有默认的索引设置而非用户显式定义,不了解存储引擎的内部机制,绝对是场灾难。下个星期(12/10~12/16)主要阅读任务:1.《高性能MySQL》第四章:查询性能优化2.尽量每天写BLOG进行总结

2010-12-09 13:44:00 577

原创 MySQl的ON DUPLICATE KEY

<br /><br />今天偶然看到ON DUPLICATE KEY这么个奇怪的语句,翻阅手册实验了下<br />创建表:<br />create t1(a int,b int, c int ,primary key(a));<br />插入语句:<br />insert into t1 values(1,3,3) <br />1,3,3<br />再次<br />insert into t1 values(1,6,7) on duplicate key update c = c+4;<br />则变为<b

2010-12-08 23:12:00 2254

转载 ubuntu的apt命令(ZZ)

<br />apt-get install packagename——安装一个新软件包(这个是最经常用到的)<br /><br />apt-get update–>在修改/etc/apt/sources.list或/etc/apt/preferences之后运行该命令<br /><br />apt-get remove packagename–>卸载一个已安装的软件包(保留配置文档)<br /><br />apt-get –purge remove packagename–>卸载一个已安装的软件包(删除配置

2010-12-08 15:44:00 618

原创 MySQL笔记(索引和表维护)

<br /> <br />索引和表维护<br />------<br />1.检查表:check table<br />修复损坏的表:repair table(并非所有的存储引擎都支持)<br />2.更新索引统计:Analyze table<br /> -主要用于查询优化器,优化器基于开销,而主要开销指标是查询会访问的记录数<br /> -MyISAM将统计信息保存在磁盘上。在进行统计时会锁住表  <br /> -InnoDB在第一次打开表的时候利用随机索引(??)进行估计,不够精确。在InnoDB<br

2010-12-07 22:34:00 812

原创 MySQL笔记(索引排序及压缩索引)

<br /><br />1.使用索引来进行order by<br />(mark!!!看的笔记困惑,书上着墨不多,以后分析代码时细看!!)<br />只有当索引的顺序和order by子句的顺序完全一致,并且所有列的排序方向一样才可以。当联接查询时,orderby的必须是第一个表。<br />排序查询的where和order by需要形成索引的最左前缀,即总是要包含索引的左边的列。<br />例如对于表a(i int,j int ,k int,t int),在i,j,k上建索引<br />如下:<br />

2010-12-06 22:31:00 2664 1

原创 MySQL笔记(覆盖索引)

<br /><br />覆盖索引:即包含查询所需要数据的索引,在某种情况下,对于查询,仅仅读取索引上的数据就已经足够了。一般情况下,在索引中查询的代价比。<br />在查询前面使用explain,可以通过输出的extra列来判断,对于一个索引覆盖查询,显示为using index,MySQL查询优化器在执行查询前会决定是否有索引覆盖查询。<br />以下两种情况将不会覆盖查询<br />1)没有一个覆盖查询的索引<br />2)执行like操作<br />当然,可以对索引进行延伸或重写查询,使用诸如join

2010-12-05 22:26:00 1109

转载 MySQL的联结(Join)语法(ZZ)

<br /><br />出处:http://www.blogjava.net/chenpengyi/archive/2005/10/17/15747.html<br /> <br />1.内联结、外联结、左联结、右联结的含义及区别:<br /> <br />在讲MySQL的Join语法前还是先回顾一下联结的语法,呵呵,其实连我自己都忘得差不多了,那就大家一起温习吧(如果内容有错误或有疑问,可以来信咨询:陈朋奕 chenpengyi#gmail.com),国内关于MySQL联结查询的资料十分少,相信大家在看了

2010-12-05 22:07:00 588

原创 MySQL笔记(聚集索引)

(目前为止比较困惑的一个部分,重点MARK下!)聚集索引(或称聚簇索引)是一种存储数据的方式,在Postgre和Oracle(被称为"index-organized table")均进行了实现。MySQL中仅有SolidDB和InnoDB支持聚集索引,并且在5.1之前还不支持选择列进行聚集。在InnoDB中指定了主键后,数据的存储顺序就是主键的顺序(默认聚集索引????)例如对于一个以整数字段作为主键的表,依次插入9,8,10,实验结果表明顺序会自动被调整为8,9,10(由此可见在Innodb中使用主键一定

2010-12-05 15:38:00 1060

原创 MySQL笔记

<br /><br />R-Tree索引<br />MyISAM支持空间索引,可以使用于如GEOMETRY这样的地理空间数据类型(??困惑- -//?)<br /> <br />全文索引:<br />从文本中找到关键字,而不是直接和索引中的值进行比较。这似乎是个很强大的功能<br />先在这里mark一下,后面再分析。<br /> <br /> <br /> <br />类似下面的查询不能使用a上的索引<br />mysql > SELECT a from t where a+1 =5;<br />或者在w

2010-12-04 00:31:00 436

原创 MySQL笔记(哈希索引)

<br /><br />hash索引<br />通过计算被索引列的哈希码,建立子哈系表的基础上,只对精确查询有用。<br />在MySQL中,只有Memory存储引擎支持显式的哈希索引<br />如<br />CREATE TABLE th(<br />l_name VARCHAR(50) NOT NULL,<br />f_name VARCHAR(50) NOT NULL,<br />KEY USING HASH(f_name)<br />) ENGINE=MEMORY;<br /> <br />1.哈希

2010-12-03 00:06:00 2357

原创 MySQL笔记(MySQL索引)

<br /><br />索引实现于存储引擎层,因此不具有统一的标准,其实现方式也可能不相同。<br />如果索引包多列数据,那么列的顺序很重要,因为MySQL只能高效的搜索索引的最左前缀(leftmost prefix)<br /> <br />B-Tree索引<br />为大部分存储引擎所支持<br />Ps:NDB Cluster存储引擎尽管把索引标记为BTREE,但其内部使用的却是T-TREE数据结构<br />许多存储引擎实际使用的B+树,它的每一个叶子节点都包含了指向下一个节点的联接,以实现快速的

2010-12-02 00:00:00 451

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除