君子博学而日参省乎己 则知明而行无过矣

博客园 首页 新随笔 联系 订阅 管理
  1057 随笔 :: 381 文章 :: 141 评论 :: 169万 阅读

随笔分类 -  DataBase

摘要:摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MyS... 阅读全文
posted @ 2015-03-17 00:01 刺猬的温驯 阅读(198) 评论(0) 推荐(0) 编辑

摘要:我们都知道数据库连接是一种有限和非常昂贵的应用资源,怎样对这些资源进行高效的管理,能有效的改善整个系统的性能和健壮性。数据库连接池正是针对这个问题而提出来的。数据库连接负责分配、释放和管理数据库连接。使数据库连接可以重复利用,而不是用一次建立一次数据库连接。基本思路建立一个容器每次到这个容器里得到连接,如果为空则建立一个新连接。当连接使用完后归还给这个容器这里就有二个难点1.容器必需是同步的,线程安全的。2.连接怎归还连接池方案:针对这二个难点,我们分别提出了二个解决方法1.使用ConcurrentLinkedQueue实现先进先出队列ConcurrentLinkedQueue无界线程安全队列 阅读全文
posted @ 2013-11-09 18:58 刺猬的温驯 阅读(474) 评论(0) 推荐(0) 编辑

摘要:数据库连接池在编写应用服务是经常需要用到的模块,太过频繁的连接数据库对服务性能来讲是一个瓶颈,使用缓冲池技术可以来消除这个瓶颈。我们可以在互联网上找到很多关于数据库连接池的源程序,但是都发现这样一个共同的问题:这些连接池的实现方法都不同程度地增加了与使用者之间的耦合度。很多的连接池都要求用户通过其规定的方法获取数据库的连接,这一点我们可以理解,毕竟目前所有的应用服务器取数据库连接的方式都是这种方式实现的。但是另外一个共同的问题是,它们同时不允许使用者显式的调用 Connection.close() 方法,而需要用其规定的一个方法来关闭连接。这种做法有两个缺点:第一:改变了用户使用习惯,增加了用 阅读全文
posted @ 2013-11-09 18:55 刺猬的温驯 阅读(956) 评论(0) 推荐(0) 编辑

摘要:引言 近年来,随着Internet/Intranet建网技术的飞速发展和在世界范围内的迅速普及,计算机 应用程序已从传统的桌面应用转到Web应用。基于B/S(Browser/Server)架构的3层开发模式逐渐取代C/S(Client/Server)架构的开发模式,成为开发企业级应用和电子商务普遍采用的技术。在Web应用开发的早期,主要使用的技术是CGI﹑asp﹑php等。之后,Sun公司推出了基于java语言的Servlet+jsp+JavaBean技术。相比传统的开发技术,它具有跨平台﹑安全﹑有效﹑可移植等特性,这使其更便于使用和开发。 Java应用程序访问数据库的基本原理 在Ja... 阅读全文
posted @ 2013-11-09 17:45 刺猬的温驯 阅读(333) 评论(0) 推荐(0) 编辑

摘要:转载:http://blog.codinglabs.org/articles/theory-of-mysql-index.html摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分。第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础。第二部分结合 阅读全文
posted @ 2013-07-13 03:13 刺猬的温驯 阅读(271) 评论(0) 推荐(0) 编辑

摘要:转载http://isky000.com/database/mysql-performance-tuning-hardware接着上一篇MySQL数据库性能优化之存储引擎选择,这是 MySQL数据库性能优化专题 系列的第六篇文章:MySQL数据库性能优化之硬件优化在过往与很多人的交流过程中发现,在谈到基于硬件来进行数据库性能瓶颈分析的时候,常被大家误解为简单的使用更为强劲的主机或者存储来替换现有的设备。个人觉得这其中可能存在一个非常大的误区。我们在谈论基于硬件进行优化的时候,不能仅仅将数据库使用的硬件划分为主机和存储两部分,而是需要进一步对硬件进行更细的分解,至少也应该分解到如下范畴:主机CP 阅读全文
posted @ 2012-09-01 14:03 刺猬的温驯 阅读(1224) 评论(0) 推荐(0) 编辑

摘要:接着上一篇MySQL 数据库性能优化之SQL优化,这是MySQL数据库性能优化专题系列的第五篇文章:MySQL数据库性能优化之存储引擎选择离上一篇文章已经有很长时间没有更新这个MySQL数据库性能优化专题了,时间太紧加上人之惰性,今天这里将之前就规划好的关于存储引擎选择方面的内容更新出来,希望对大家有所帮助吧MySQL 的存储引擎可能是所有关系型数据库产品中最具有特色的了,不仅可以同时使用多种存储引擎,而且每种存储引擎和MySQL之间使用插件方式这种非常松的耦合关系。由于各存储引擎功能特性差异较大,这篇文章主要是介绍如何来选择合适的存储引擎来应对不同的业务场景。MyISAM特性不支持事务:My 阅读全文
posted @ 2012-09-01 14:02 刺猬的温驯 阅读(296) 评论(0) 推荐(0) 编辑

摘要:接着上一篇MySQL 数据库性能优化之索引优化,这是MySQL数据库性能优化专题系列的第四篇文章:MySQL 数据库性能优化之SQL优化有人反馈之前几篇文章过于理论缺少实际操作细节,这篇文章就多一些可操作性的内容吧。注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础优化目标减少 IO 次数IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段。降低 CPU 计算除了 IO 瓶颈之外,SQL优化中需要 阅读全文
posted @ 2012-09-01 14:01 刺猬的温驯 阅读(210) 评论(0) 推荐(0) 编辑

摘要:接着上一篇MySQL 数据库性能优化之表结构,这是MySQL数据库性能优化专题系列的第三篇文章:MySQL 数据库性能优化之索引优化大家都知道索引对于数据访问的性能有非常关键的作用,都知道索引可以提高数据访问效率。为什么索引能提高数据访问性能?他会不会有“副作用”?是不是索引创建越多,性能就越好?到底该如何设计索引,才能最大限度的发挥其效能?这篇文章主要是带着上面这几个问题来做一个简要的分析,同时排除了业务场景所带来的特殊性,请不要纠结业务场景的影响。索引为什么能提高数据访问性能?很多人只知道索引能够提高数据库的性能,但并不是特别了解其原理,其实我们可以用一个生活中的示例来理解。我们让一位不太 阅读全文
posted @ 2012-09-01 14:00 刺猬的温驯 阅读(200) 评论(0) 推荐(0) 编辑

摘要:接着上一篇MySQL 数据库性能优化之缓存参数优化,这是MySQL数据库性能优化专题系列的第二篇文章:MySQL 数据库性能优化之表结构很多人都将数据库设计范式作为数据库表结构设计“圣经”,认为只要按照这个范式需求设计,就能让设计出来的表结构足够优化,既能保证性能优异同时还能满足扩展性要求。殊不知,在N年前被奉为“圣经”的数据库设计3范式早就已经不完全适用了。这里我整理了一些比较常见的数据库表结构设计方面的优化技巧,希望对大家有用。由于MySQL数据库是基于行(Row)存储的数据库,而数据库操作 IO 的时候是以 page(block)的方式,也就是说,如果我们每条记录所占用的空间量减小,就会 阅读全文
posted @ 2012-09-01 13:59 刺猬的温驯 阅读(192) 评论(0) 推荐(0) 编辑

摘要:在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感兴趣的朋友们有所帮助。这是MySQL数据库性能优化专题系列的第一篇文章:MySQL 数据库性能优化之缓存参数优化数据库属于 IO 密集型的应用程序,其主要职责就是数据的管理及存储工作。而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级。所以,要优化数据库,首先第一步需要优化的就是 IO,尽可能将磁盘IO转化为内存IO。本文先从 MySQL 阅读全文
posted @ 2012-09-01 13:56 刺猬的温驯 阅读(227) 评论(0) 推荐(0) 编辑

摘要:转载自 http://www.cnblogs.com/lina1006/archive/2011/04/29/2032894.html什么是MySql数据库 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合。我们通常说的MySql数据库,SQL Server数据库等等其实是数据库管理系统,它们可以存储数据,并提供查询和更新数据库中的数据的功能等等。根据数据库如何存储数据和如何操作数据的实现机制不同,这些数据库之间即有区别又有共同点。 MySql数据库是开放源代码的关系型数据库。目前,它可以提供的功能有:支持SQL语言、子查询、存储过程. 阅读全文
posted @ 2012-09-01 13:12 刺猬的温驯 阅读(195) 评论(0) 推荐(0) 编辑

摘要:获取数据库的相关信息:1.获得数据库的一些相关信息2.获得该用户下面的所有表3.获得该用户下面的所有视图4.获得数据库中所有方案名称 5.获得表或视图中的所有列信息6.获得一个表的索引信息7.获得一个表的主键信息8.获得一个表的外键信息[java]view plaincopyprint?packagecom.zsw.test;importjava.sql.Connection;importjava.sql.DatabaseMetaData;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLExcept 阅读全文
posted @ 2012-08-17 18:08 刺猬的温驯 阅读(6271) 评论(0) 推荐(0) 编辑

摘要:随着项目的需要,对于数据库支持要求越多越好,最好是Generic JDBC Connection。为此,笔者要求项目程序内只允许使用JDBC接口。在此条件下如何获取表的字段信息?有哪几种方式?都适用吗?字段信息字段在表里就是一个Column,关于Column在JDBC里面有20多个参数来描述它,称为元数据,Metadata。包括:1.TABLE_CATString => table catalog (may be null)2.TABLE_SCHEMString => table schema (may be null)3.TABLE_NAMEString => table 阅读全文
posted @ 2012-08-17 13:21 刺猬的温驯 阅读(4412) 评论(0) 推荐(0) 编辑

摘要:做JAVA的人玩JDBC肯定已经很熟练了,像DriverManager、Connection、ResultSet、Statement这些基本类大家肯定很常用啦,我不赘述那些诸如注册JDBC驱动、创建连接、获取数据集的API了,在这我介绍一些写框架时常用的API,大家共同学习吧。ResultSetMetaData获取ResultSet对象的元数据信息 以Hibernate的Session.get(class,id)为例,该api是根据主键id获取class映射表的一条数据,这里只要class参数传入不同,则获取的表也不同,然而数据库那么多表,不同表的字段个数又不同,如何准确把表字段映射到clas 阅读全文
posted @ 2012-08-17 13:19 刺猬的温驯 阅读(684) 评论(0) 推荐(0) 编辑

摘要:理論部份前言 在数据库中快速搜索数据,使用索引可以提高搜索速度,然而索引一般是建立在数字型或长度比较短的文本型字段上的,比如说编号、姓名等字段,如果建立在长度比较长的文本型字段上,更新索引将会花销很多的时间。如在文章内容字段里用like语句搜索一个关键字,当数据表里的内容很多时,这个时间可能会让人难以忍受。在SQL Server中提供了一种名为全文索引的技术,可以大大提高从长字符串里搜索数据的速度,在本節里,将会对全文索引进行详细的介绍 (1)全文索引概念: 全文索引与普通的索引不同,普通的索引是以B-tree结构来维护的,而全文索引是一种特殊类型的基于标记的功能性索引,是由Microsoft 阅读全文
posted @ 2010-05-14 01:26 刺猬的温驯 阅读(569) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示