随笔分类 -  RDBMS

摘要:在操作ORACLE数据库的时候,由于执行完,没有COMMIT,直接把PL/SQL关闭掉,后来导致那张表被锁住,当编辑时就会出现这个信息,record is locked by another user! 当出现这种情况的时候,只要操作下面几个步骤就可以解锁了。 1、查看锁 select t2.username,t2.sid,t2.serial#,t2.logon_time from v$locked_object t1,v$session t2 where t1.session_id=t2.sid ; 执行后如下:2、Kill --alter system kill session ' 阅读全文
posted @ 2013-11-13 11:38 王 庆 阅读(894) 评论(0) 推荐(0)
摘要:如果单MySQL的优化始终还是顶不住压力时,这个时候我们就必须考虑MySQL的高可用架构(很多同学也爱说成是MySQL集群)了,目前可行的方案有:一、MySQL Cluster优势:可用性非常高,性能非常好。每份数据至少可在不同主机存一份拷贝,且冗余数据拷贝实时同步。但它的维护非常复杂,存在部分Bug,目前还不适合比较核心的线上系统,所以这个我不推荐。二、DRBD磁盘网络镜像方案优势:软件功能强大,数据可在底层快设备级别跨物理主机镜像,且可根据性能和可靠性要求配置不同级别的同步。IO操作保持顺序,可满足数据库对数据一致性的苛刻要求。但非分布式文件系统环境无法支持镜像数据同时可见,性能和可靠性两 阅读全文
posted @ 2013-10-24 11:09 王 庆 阅读(8477) 评论(1) 推荐(1)
摘要:目前流行几种备份方式:1、逻辑备份:使用mysql自带的mysqldump工具进行备份。备份成sql文件形式。优点:最大好处是能够与正在运行的mysql自动协同工作,在运行期间可以确保备份是当时的点,它会自动将对应操作的表锁定,不允许其他用户修改(只能访问)。可能会阻止修改操作。sql文件通用方便移植。缺点:备份的速度比较慢。如果是数据量很多的时候。就很耗时间。如果数据库服务器处在提供给用户服务状态,在这段长时间操作过程中,意味着要锁定表(一般是读锁定,只能读不能写入数据)。那么服务就会影响的。备注:所谓的与mysql服务器能够自动协同工作,实际上是指加参数来控制mysql服务器,比如锁定所有 阅读全文
posted @ 2013-09-09 09:24 王 庆 阅读(406) 评论(0) 推荐(1)
摘要:MYSQL的分区字段,必须包含在主键字段内MYSQL的分区字段,必须包含在主键字段内在对表进行分区时,如果分区字段没有包含在主键字段内,如表A的主键为ID,分区字段为createtime ,按时间范围分区,代码如下: CREATE TABLE T1 ( id int(8) NOT NULL AUTO_INCREMENT, createtime datetime NOT NULL, PRIMARY KEY (id)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8PARTITION BY RANGE(TO_DAYS... 阅读全文
posted @ 2013-08-27 15:32 王 庆 阅读(23442) 评论(0) 推荐(4)
摘要:Java程序员编程时需要混合面向对象思维和一般命令式编程的方法,能否完美的将两者结合起来完全得依靠编程人员的水准: 技能(任何人都能容易学会命令式编程)模式(有些人用“模式-模式”,举个例子,模式可以应用到任何地方,而且都可以归为某一类模式)心境(首先,要写个好的面向对象程序是比命令式程序难的多,你得花费一些功夫)但当Java程序员写SQL语句时,一切都不一样了。SQL是说明性语言而非面向对象或是命令式编程语言。在SQL中要写个查询语句是很简单的。但在Java里类似的语句却不容易,因为程序员不仅要反复考虑编程范式,而且也要考虑算法的问题。下面是Java程序员在写SQL时常犯的错误(没有特定的顺 阅读全文
posted @ 2013-08-08 08:58 王 庆 阅读(311) 评论(0) 推荐(0)
摘要:时间在我们开发中应用非常普遍,大部分开发中我们将用Mysql的datetime格式来存储,但是对于经常用时间来排序或者查询的应用中,我们要将时间做成索引,这个就跟查询效率很有关系,但是很多程序员会用int来存时间戳,然后再进行处理 1、首先是我们分析datetime长度是8个字节,INT的长度是4个字节,存储空间上比datatime少。 2、int存储索引的空间也比datetime少,排序效率高,查询速度比较快。 3、方便计算,unix时间戳有点就是方便计算。 总结了一下timestamp和datetime的区别: 1、timestamp有范围限制1970~20372、timesta... 阅读全文
posted @ 2013-07-18 18:04 王 庆 阅读(881) 评论(0) 推荐(0)
摘要:相信每个人都被问过无数次Spring声明式事务的隔离级别和传播机制吧!今天我也来说说这两个东西. 加入一个小插曲, 一天电话里有人问我声明式事务隔离级别有哪几种, 我就回答了7种, 他问我Spring的版本, 我回答为3.0。 他说那应该是2.5的,3.0好像变少了。 我回答这个没有确认过。 后来我就google了一下,没发现什么痕迹说明事务的隔离级别变少了,也查了下官方文档,也没有相关的说明。索性在github上clone一下Spring的源码,看看源码中有几种就是几种了呗。 后来想想那天他那么问我完全可能是一个坑啊,因为交谈的过程中挖过至少两个坑了。再者说,Spri... 阅读全文
posted @ 2013-07-17 10:22 王 庆 阅读(49113) 评论(5) 推荐(9)
摘要:这两个语句都是为了实现:如果没有记录则插入,如果有记录则更新。有点需要注意,这两个语句都是Mysql特有的语句,不属于标准sql。它的实现类似于以下写法:select 1 from t where id=1;程序判断是否存在值if(存在){ update t set update_time = '2012' where id = 1}else{ insert into t(id, update_time) values(1,'2012')} 1)replace into实现上述逻辑:replace into t(id, update_time) values(1 阅读全文
posted @ 2013-05-27 10:19 王 庆 阅读(929) 评论(0) 推荐(0)
摘要:对没有索引的字段进行查询重复时如果使用select name from table where name in(select name from table group by name having count(name)>1)这类查询,效率非常低,是不可取的,下面给出替代步骤:1.根据重复记录创建临时表create table temptable as ( select title from video GROUP BY title HAVING count(title) >1);2.查询重复数据select a.* from temptable t,video a where 阅读全文
posted @ 2013-05-26 00:44 王 庆 阅读(390) 评论(0) 推荐(0)
摘要:MySQL主主复制MySQL主主复制结构区别于主从复制结构。在主主复制结构中,两台服务器的任何一台上面的数据库存发生了改变都会同步到另一台服务器上,这样两台服务器互为主从,并且都能向外提供服务。下面是配置步骤需要两台MySQL主机做服务器:MySQL的创建方法参见:创建MySQL数据库Server-1:192.168.0.1Server-2:192.168.0.2一、创建并授权用户这一步在每一台(主)服务器上创建一个用户,并为之授权,使它们可以互相访问彼此的数据库在Server-1上:创建一个充许Server-1来访问的用户server2,密码为:server2mysql> GRANT 阅读全文
posted @ 2013-05-15 09:56 王 庆 阅读(292) 评论(0) 推荐(0)
摘要:甲骨文公司的MySQL Windows体验团队今天更新了MySQL for Excel,发布了1.1.1版本。 MySQL for Excel是包含在MySQL Installer中的一个工具,允许开发者通过微软的Excel直接操作MySQL数据库,比如:导出MySQL数据到Excel导入Excel数据到MySQL现有数据表或新建数据表直接在Excel中编辑MySQL数据1.1.1版本主要修复了一些bug,详细信息:MySQL for Excel 1.1.1 GA has been released下载:http://dev.mysql.com/downloads/installer/ ... 阅读全文
posted @ 2013-04-28 09:16 王 庆 阅读(735) 评论(0) 推荐(0)
摘要:1. statement每次执行sql语句,相关数据库都要执行sql语句的编译;preparedstatement是预编译的, 采用Cache机制(预编译语句,放在Cache中,下次执行相同SQL语句时,则可以直接从Cache中取出来,有利于sql生成查询计划。),对于批量处理可以大大提高效率. 也叫JDBC存储过程。例如,如果要执行两条sql语句SELECT colume FROM TABLE WHERE colume=1;SELECT colume FROM TABLE WHERE colume=2;会生成两个执行计划一千个查询就生成一千个执行计划!PreparedStatement用于使 阅读全文
posted @ 2013-04-26 16:56 王 庆 阅读(1052) 评论(0) 推荐(0)
摘要:在MySQL经历了2008年Sun的收购和2009年Oracle收购Sun的过程中,基本处于停滞发展的情况,在可以预见的未来,MySQL是肯定会 被Oracle搁置并且逐步雪藏消灭掉的。MySQL随着相应的各主创和内部开发人员的离去,缔造了各个不同的引擎和分支,让MySQL有希望继续发扬光 大起来。 本文大致讲解一下MySQL目前除了主要的 MyISAM、InnoDB、Heap(Memory)、NDB等引擎之外的其他引擎的发展和现状,以及MySQL主干以外的分支的状况,为了我们未来更好的使用MySQL或者其他分支建立一个了解基础。MySQL存储引擎介绍Falcon存储引擎Falcon存储引擎. 阅读全文
posted @ 2013-04-25 09:40 王 庆 阅读(379) 评论(0) 推荐(0)
摘要:前段时间Facebook的新版消息系统发布,Facebook对HBase的成功使用也使得很多的HBase案例得以出现,下文是Facebook的 Hadoop工程师Dhruba Borthakur发表的Hadoop系列文章中的一篇,对Facebook选择Hadoop和HBase的原因做了一个说明。 Dhruba Borthakur首先总结了Hadoop和HBase的优势。他认为HBase横向扩展性强。对Facebook这种少量数据存储场景来说,扩容几乎是家常便饭,HBase能够使数据扩容非常容易。并且支持很高的写吞吐。Facebook的消息数据很庞大,每天的写量也很大。同时在同一个数据中心,能够 阅读全文
posted @ 2013-04-25 09:22 王 庆 阅读(305) 评论(0) 推荐(0)
摘要:也许你已经在一些地方看到这个消息,Facebook 已经开发一款新的社会化收件箱,集成了电子邮件、即时通讯、短信、文本信息、Facebook站内信息。最重要的是,他们需要每个月存储 1350 亿条信息。他们在哪里存储这些信息?Facebook的Kannan Muthukkaruppan 在《信息背后的技术》一文中给出一个令人惊奇的答案:HBase。HBase 击败了MySQL、Cassandra和其他一些选项,成为了Facebook的选择。 为什么这一选择令人惊奇?Facebook 创建了Cassandra,其目的就是为了建造一个收件箱类型的应用程序,但是最终他们发现,Cassandra的.. 阅读全文
posted @ 2013-04-25 09:17 王 庆 阅读(338) 评论(0) 推荐(0)
摘要:MySQL复制操作可以将数据从一个MySQL服务器(主)复制到其他的一个或多个MySQL服务器(从)。试想一下,如果从服务器不再局限为一个MySQL服务器,而是其他任何数据库服务器或平台,并且复制事件要求实时进行,是否可以实现呢? MySQL团队最新推出的 MySQL Applier for Hadoop(以下简称Hadoop Applier)旨在解决这一问题。用途例如,复制事件中的从服务器可能是一个数据仓库系统,如Apache Hive,它使用Hadoop分布式文件系统(HDFS)作为数据存储区。如果你有一个与HDFS相关的Hive元存储,Hadoop Applier就可以实时填充Hive数 阅读全文
posted @ 2013-04-25 09:14 王 庆 阅读(275) 评论(0) 推荐(0)
摘要:项目进行压力测试的时候,运行大概1小时候,后台抛出以下异常:Nov 9, 2012 1:41:59 AM com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector runWARNING: com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector@4b9cafa7 -- APPARENT DEADLOCK!!! Complete Status: Managed Threads: 3 Active Threads: 3... 阅读全文
posted @ 2012-11-09 11:13 王 庆 阅读(26461) 评论(0) 推荐(2)