随笔分类 -  数据库

摘要:Apply工作原理: Apply操作符让符合查询的每一条记录都调用一次TVF函数,并将结果与原数据表的记录内容一起展开. Apply操作符定义在From子句内,使用方式与Join操作符类似.其格式有两种类型: CROSSAPPLY OUTERAPPLY两者的差异只在当外部的数据表逐条将记录带入到TVF之后,若TVF并无符合的记录返回时,CROSSAPPLY运算将不会显示该条记录,而OUTERAPPLY依然会显示外部数据表对应的记录,但TVF相关的字段则以NULL显示.http://database.51cto.com/art/201108/283359.htmSQL Server数据库操作中, 阅读全文
posted @ 2014-03-11 13:17 vivianC 阅读(313) 评论(0) 推荐(0)
摘要:转 http://www.cnblogs.com/end/archive/2011/02/17/1957011.htmlSQL Server 2005 新增 cross apply 和 outer apply 联接语句,增加这两个东东有啥作用呢? 我们知道有个 SQL Server 2000 中有个 cross join 是用于交叉联接的。实际上增加 cross apply 和 outer apply 是用于交叉联接表值函数(返回表结果集的函数)的, 更重要的是这个函数的参数是另一个表中的字段。这个解释可能有些含混不请,请看下面的例子: -- 1. cross join 联接两个表select 阅读全文
posted @ 2014-01-10 12:55 vivianC 阅读(217) 评论(0) 推荐(0)
摘要:http://www.phpben.com/?post=74摘要:第一部分:基础知识第二部分:MYISAM和INNODB索引结构1、简单介绍B-tree B+ tree树2、MyisAM索引结构3、Annode索引结构4、MyisAM索引与InnoDB索引相比较第三部分:MYSQL优化1、表数据类型选择2、sql语句优化(1)最左前缀原则(1.1)能正确的利用索引(1.2)不能正确的利用索引(1.3)如果一个查询where子句中确实不需要password列,那就用“补洞”。(1.4)like(2)Order by优化(2.1)filesort优化算法.(2.2)单独order by用不了索引, 阅读全文
posted @ 2012-12-25 14:20 vivianC 阅读(142) 评论(0) 推荐(0)
摘要:转自http://www.cnblogs.com/hustcat/archive/2009/10/28/1591648.html写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录。如果没有索引,查询将对整个表进行扫描,最坏的情况下,如果所有数据页都不在内存,需要读取10^4个页面,如果这10^4个页面在磁盘上随机分布,需要进行10^4次I/O,假设磁盘每次I/O时间为10ms(忽略数据传输时间),则总共需要100s(但实际上要好很多很多)。如果对之建立B-Tree索引 阅读全文
posted @ 2012-10-31 12:49 vivianC 阅读(174) 评论(0) 推荐(0)
摘要:转 http://www.codinglabs.org/html/theory-of-mysql-index.html摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分。第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础。第二部分结合MySQL数 阅读全文
posted @ 2012-10-31 12:44 vivianC 阅读(106) 评论(0) 推荐(0)
摘要:转自 http://www.phpben.com/?post=74摘要:第一部分:基础知识第二部分:MYISAM和INNODB索引结构1、简单介绍B-tree B+ tree树2、MyisAM索引结构3、Annode索引结构4、MyisAM索引与InnoDB索引相比较第三部分:MYSQL优化1、表数据类型选择2、sql语句优化(1)最左前缀原则(1.1)能正确的利用索引(1.2)不能正确的利用索引(1.3)如果一个查询where子句中确实不需要password列,那就用“补洞”。(1.4)like(2)Order by优化(2.1)filesort优化算法.(2.2)单独order by用不了 阅读全文
posted @ 2012-10-31 12:30 vivianC 阅读(202) 评论(0) 推荐(0)
摘要:http://blogread.cn/it/article.php?id=5852&f=sinat 阅读全文
posted @ 2012-10-18 11:27 vivianC 阅读(193) 评论(0) 推荐(0)
摘要:Explain 结果解读与实践基于 MySQL 5.0.67 ,存储引擎 MyISAM 。注:单独一行的"%%"及"`"表示分隔内容,就象分开“第一章”“第二章”。explain 可以分析 select 语句的执行,即 MySQL 的“执行计划”:mysql> explain select 1;+----+-------------+-------+------+---------------+------+---------+------+------+----------------+| id | select_type | table | t 阅读全文
posted @ 2012-09-04 14:35 vivianC 阅读(244) 评论(0) 推荐(1)
摘要:MySQL源代码的海洋中游弋 初探MySQL之SQL执行过程五月 15, 2012byadmin·14 Comments导读: 2012年5月12日,MySQL技术群-北京技术圈的MySQL爱好者,聚集搜狐公司,举办MySQL数据库技术沙龙,本文内容为搜狐DBA团队古雷(外号:古大师,因研究佛学而来)分享的MySQL之SQL执行过程,先整理成文章的方式供大家阅读,古大师也是mysqlops中文网的技术编辑之一。序言:•不积跬步,无以至千里;不积小流,无以成江海——《劝学》荀子•吾生也有涯,而知也无涯。以有涯随无涯,殆已——《养生主》庄子Group by•select name1 fr 阅读全文
posted @ 2012-09-04 13:18 vivianC 阅读(183) 评论(0) 推荐(0)
摘要:Replication 线程 Mysql的 Replication 是一个异步的复制过程,从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql instance(我们称之 Slave)。在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在 Slave 端,另外一个线程(IO线程)在 Master 端。 要实现 MySQL 的 Replication ,首先必须打开 Master 端的Binary Log(mysql-bin.xxxxxx)功能,否则无法实现。因为整个复制过程实际上就是Slav... 阅读全文
posted @ 2012-09-04 12:16 vivianC 阅读(144) 评论(0) 推荐(0)
摘要:前言High Performance mysql深入剖析了mysql架构原理,以及sql语句执行原理,并结合作者多年实际经验提出如何高性能设计及使用mysql(不像某数据库教科书籍简单介绍几个sql语句)。本书颠覆了我对与对mysql的认识。特别对于目前海量用户互联网中对于高并发,低延迟应用场景如何设计和使用mysql提出了技巧和方法。有志于从事互联网后台开发的童鞋值得好好研究。--by姜跃jiangyue.hust@gmail.com一.索引类型:1.B-Tree索引B树是一种适合磁盘等慢速设备的索引结构,能够以较少磁盘读取次数查找数据。以下是mysql中InnoDB引擎B+树结构。能用B+ 阅读全文
posted @ 2012-08-27 20:03 vivianC 阅读(336) 评论(0) 推荐(0)
摘要:文章地址MySQL数据库InnoDB存储引擎多版本控制(MVCC)实现原理分析 阅读全文
posted @ 2012-08-25 20:55 vivianC 阅读(259) 评论(0) 推荐(0)
摘要:本文配图来自《高性能MySQL(第二版)》。在数据库中,对性能影响最大的几个策略包括数据库的锁策略、缓存策略、索引策略、存储策略、执行计划优化策略。索引策略决定数据库快速定位数据的效率,存储策略决定数据持久化的效率。MySQL中两大主要存储引擎MyISAM和InnoDB采用了不同的索引和存储策略,本文将分析它们的异同和性能。MySQL主要提供2种方式的索引:B-Tree(包括B+Tree)索引,Hash索引。B树索引具有范围查找和前缀查找的能力,对于N节点的B树,检索一条记录的复杂度为O(LogN)。哈希索引只能做等于查找,但是无论多大的Hash表,查找复杂度都是O(1)。显然,如果值的差异性 阅读全文
posted @ 2012-07-04 11:32 vivianC 阅读(684) 评论(0) 推荐(0)
摘要:1、EXPLAIN tbl_nameEXPLAIN tbl_name是DESCRIBE tbl_name或SHOW COLUMNS FROM tbl_name的一个同义词。2、EXPLAIN [EXTENDED] SELECT select_options如果在SELECT语句前放上关键词EXPLAIN,MySQL将解释它如何处理SELECT,提供有关表如何联接和联接的次序。借助于EXPLAIN,可以知道什么时候必须为表加入索引以得到一个使用索引来寻找记录的更快的SELECT。还可以知道优化器是否以一个最佳次序联接表。为了强制优化器让一个SELECT语句按照表命名顺序的联接次序,语句应以STR 阅读全文
posted @ 2012-07-03 21:12 vivianC 阅读(992) 评论(0) 推荐(0)
摘要:“文件存储要选用B+树这样的数据结构”——没记错的话,这是严蔚敏那本数据结构书上的一句结论。不知道是我没细看还是她没细讲,反正当时纯粹应试地记了这么个结论。不求甚解终究不是一个好的学习态度,一直以来我都没有细想过这个事情,直到看到了这篇博文http://blog.csdn.net/v_JULY_v/article/details/6530142。此文信息量很大,值得mark下来慢慢精读。今天就暂记一下关于磁盘文件存储选用B+ tree这一点以前没深究过的问题。毕竟,好记性不如烂笔头,虽然这篇里面ctrl-v担当了比较多的任务……另一个比较有趣的收获是终于知道没有B减树这个东西了。以前老看到B- 阅读全文
posted @ 2012-04-27 19:23 vivianC 阅读(1577) 评论(0) 推荐(0)
摘要:今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。0. 为查询缓存优化你的查询大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后 阅读全文
posted @ 2012-04-19 17:26 vivianC 阅读(306) 评论(0) 推荐(1)
摘要:2008-11-16:老版本的MySQL 3.22中,MySQL的单表限大小为4GB,当时的MySQL的存储引擎还是ISAM存储引擎。但是,当出现MyISAM存储引擎之后,也就是从 MySQL 3.23开始,MySQL单表最大限制就已经扩大到了64PB了(官方文档显示)。也就是说,从目前的技术环境来看,MySQL数据库的MyISAM存储 引擎单表大小限制已经不是有MySQL数据库本身来决定,而是由所在主机的OS上面的文件系统来决定了。而MySQL另外一个最流行的存储引擎之一Innodb存储数据的策略是分为两种的,一种是共享表空间存储方式,还有一种是独享表空间存储方式。当使用共享表空间存储方式的 阅读全文
posted @ 2012-04-19 17:16 vivianC 阅读(4374) 评论(0) 推荐(0)
摘要:摘要:在平时的mysql应用中,总会碰到导入数据,导出数据,当然有很多方法,这篇文章,主要介绍应用mysqlmysqldump命令进行数据导入导出,希望对大家有所帮助。一、mysql导入文件或数据或执行相关SQLmysql -h主机地址 -u用户名 -p用户密码1. 文件形式。(shell命令行)mysql -u root -p dbname < filename.sql2. 直接放在命令行(shell命令行)执行一个sqlmysql -hhostname -uusername -p dbname -e 'select * from tbname limit 1'执行后命 阅读全文
posted @ 2012-03-23 23:16 vivianC 阅读(337) 评论(0) 推荐(0)