随笔分类 -  数据库

摘要:刚才为了测试一个东西,写了个存储过程: delimiter $$drop procedure if exists sp_test$$create procedure sp_test()begin declare v_cnt int; set v_cnt = 0; while v_cnt ... 阅读全文
posted @ 2015-12-12 21:09 wingsless 阅读(1159) 评论(0) 推荐(0)
摘要:MySQL InnoDB表是索引组织表这一点应该是每一个学习MySQL的人都会首先学到的知识,这代表这表中的数据是按照主键顺序存储,也就是说BTree的叶子节点存储了所有该行的数据。 我最开始是搞Oracle的,头一次接触MySQL的时候,默认引擎还是MyISAM。当时我看到公司建立的所有的I... 阅读全文
posted @ 2015-12-12 12:17 wingsless 阅读(6771) 评论(1) 推荐(1)
摘要:昨天我写了有关MySQL的loose index scan的相关博文(http://www.cnblogs.com/wingsless/p/5037625.html),后来我发现上次提到的那个优化方法中主要的目的就是实现loose index scan,而在执行计划的层面上看,Extra信息中应... 阅读全文
posted @ 2015-12-12 00:43 wingsless 阅读(28186) 评论(3) 推荐(1)
摘要:众所周知,InnoDB采用IOT(index organization table)即所谓的索引组织表,而叶子节点也就存放了所有的数据,这就意味着,数据总是按照某种顺序存储的。所以问题来了,如果是这样一个语句,执行起来应该是怎么样的呢?语句如下: select count(distinct a)... 阅读全文
posted @ 2015-12-10 22:44 wingsless 阅读(2810) 评论(0) 推荐(1)
摘要:不知不觉的玩了两年多的MySQL,发现很多人都说MySQL对比Oracle来说,优化器做的比较差,其实某种程度上来说确实是这样,但是毕竟MySQL才到5.7版本,Oracle都已经发展到12c了,今天我就看了看MySQL的连接算法,嗯,现在来说还是不支持Hash Join,只有Nested-Loop 阅读全文
posted @ 2015-12-09 22:51 wingsless 阅读(11135) 评论(0) 推荐(0)
摘要:MySQL环境: master:192.168.202.129:3306 slave:192.168.202.129:3307,192.168.202.129:3307,192.168.202.130:3306,192.168.202.130:3307,192.168.202.130:330... 阅读全文
posted @ 2014-10-18 14:39 wingsless 阅读(17392) 评论(0) 推荐(0)
摘要:单机多实例据说可以最大程度提高硬件使用,谁知道呢,但是以前的公司喜欢这样搞,我最近也在学习复制什么的,电脑搞不起两台虚拟机,刚好单机多实例可以解救我。下面就说说步骤。 承上文http://www.cnblogs.com/wingsless/p/4002806.html,我已经安装好了MySQL... 阅读全文
posted @ 2014-10-11 22:27 wingsless 阅读(11759) 评论(1) 推荐(1)
摘要:最近就想搞搞hadoop,然后装个MySQL,测试一下那个sqoop。 MySQL这种东西,既然是开放源码的,那就源码安装吧。 下面是我的测试环境说明: VMware10+Ubuntu14.04 Kylin 下面开始一步一步写(非特别注明,都是用root用户执行): 1 下载Maria... 阅读全文
posted @ 2014-09-30 23:18 wingsless 阅读(7552) 评论(0) 推荐(1)
摘要:因为换了工作正在学习使用MySQL,今天领导提出了一个问题,如下: X列是累加值,A列是每日新增值,那么X2应该是X1+A2,而且存储过程里也是这样计算的。可是奇怪的是X2的值却总是和正确值(2396116766)有一定的差异。于是我手工进行了update,但是没有办法,数据永远是:2396116736。在我百思不得其解的时候我决定看看这个表怎么建立的,我发现这个字段是float(20,4),参阅《MySQL技术内幕:SQL编程》和《高性能MySql》发现,float字段是不精确的。于是把这个字段改成了decimal,这样就正确了。 我参阅了很多网上的资料,很多资料都有过实验,有些人说超过.. 阅读全文
posted @ 2013-11-15 21:31 wingsless 阅读(7347) 评论(2) 推荐(0)
摘要:Kettle是Pentaho的一个组件,主要用于数据库间的数据迁移,到我用过的4.2版,还不支持noSQL,不知道4.4是不是支持了。 Kettle自己有三个主要组件:Spoon,Kitchen,Pan。其中Spoon是一个图形化的界面,用于windows的时候,先设置环境变量:pentaho_java_home,例如:C:\Program Files\Java\jdk1.7.0_25,其实就是你的java安装目录,1.6以上即可。windows下双击Spoon.bat就可以了,界面如下: 这里我建立了资源库,其实可以用文件形式存储,存储的结构都是xml,但是我还是觉得建立一个资源库... 阅读全文
posted @ 2013-07-13 00:37 wingsless 阅读(84966) 评论(4) 推荐(6)
摘要:最近建立数据仓库的过程中遇到了若干问题,现总结如下。 1 mysql到oracle的迁移。这是个复杂的问题,因为我们没有计划投资购买datastage这样牛逼的ETL工具,因此最开始我决定自己写代码,将mysql的数据导入文本中,再利用sqlldr将数据导入到oracle中。这个过程说起来并不是很复杂,但是实际操作起来比较烦,因为我遇到了如下的问题: 1.1 NULL值。mysql导出文件的时候null值会被处理为“\N”,这样在入库的时候oracle会直接将它当做一个字符来处理,因此就出现了这样的困扰,我也许还需要在数据导入成功以后进行一次update操作,四五万条数据我也就认了,可... 阅读全文
posted @ 2013-07-12 22:52 wingsless 阅读(1571) 评论(1) 推荐(1)
摘要:我希望用程序生成一些测试数据,测试一下开源数据库中哪个比较适合我们的数据仓库项目,于是有了这篇随笔。 其实测试数据可以用过程生成,但是我想学学java因此决定用程序实现。而且我先在把windows这个让我一打开电脑就想娱乐的系统卸载了,现在纯Ubuntu。 先记录下Java的配置: 首先需要下载Java,这是一个很简单的过程,链接在这里:http://www.oracle.com/technetwork/java/javase/downloads/index.html。我的是64位系统,因此选择了64位的gz包。下载好以后随便解压到哪个目录底下都是可以的。然后只需要配置这么几个环境变量... 阅读全文
posted @ 2013-06-01 00:42 wingsless 阅读(1188) 评论(0) 推荐(0)
摘要:换了新的单位我现在也从oracle从业者变成了mysql从业者,当然放弃oracle的原因主要是因为在新单位可以尽量少的写代码了。 现在我面对的是一个数据仓库,和上一家公司一样,数据仓库最让我们技术人员受不鸟的是数据量太大,存储,I/O,效率都让人想死,每次有些统计分析要求,在清单表里查询简直是让我等到花儿都谢了。那么会有什么好的办法呢?我想这个问题提出来会有很多人告诉我用hadoop。是的,hadoop是现在最流行的大数据解决方案,但是hadoop有一个问题,就是我们小组现在没有人会,还需要很长的时间去学习,去搭建,而且我也不愿意轻易放弃传统的关系型数据库,说真的我连Mango都很抵制。 . 阅读全文
posted @ 2013-05-25 19:35 wingsless 阅读(10391) 评论(0) 推荐(0)
摘要:昨天有个同事找我看了一段SQL,说是很慢,我首先看了看执行计划,发现COST很大,但是同时我也发现分区读取的有很大的问题。表示这样的: create table test1 ( day_id number ) partition by range(day_id) ( partition part_0 阅读全文
posted @ 2013-04-08 13:52 wingsless 阅读(12369) 评论(0) 推荐(0)
摘要:最近整理了一下系统内所有表的空间占用情况,发现其中一些表其实只有及万行,却占用了非常大的空间,那么显而易见,这个表的“碎片”实在是太多了。 最开始接触oracle的时候我认为删除数据就是delete,但是后来的学习中,发现事情并不是我想象的那么简单,delete之后,系统也只是将这部分数据块置为可写 阅读全文
posted @ 2013-04-05 14:13 wingsless 阅读(1592) 评论(5) 推荐(2)
摘要:今天有同事告诉我,有个SQL执行了好久好久执行不出来,我说好就是多久?她说一天左右了。真是令人咋舌的SQL。于是我要来了SQL看了看执行计划,确实让人咋舌。 下图中就是执行计划的截图: 25G的COST和75T的Bytes确实是无法承受之重。这个SQL是这样子的: select部分做了很多sum运算 阅读全文
posted @ 2013-03-28 20:30 wingsless
摘要:最近负责起了DBA的部分工作,于是有一天在对表空间的清理中发现了一张表,这个表有27G那么大,是一个分区表,按天分区。我查看了过程,每天删除35天以前的数据,但是用的方法是delete,那么我就可以很明确的推断出,这个表占用了大量本应该释放的空间。 我第一个使用的方法是move: alter tab 阅读全文
posted @ 2013-03-13 13:55 wingsless 阅读(1400) 评论(0) 推荐(0)
摘要:很久以前写了一个关于分区表的博文(http://www.cnblogs.com/wingsless/archive/2012/08/06/2625809.html),后来在实际的工作中发现,我们的存储过程中存在很多这样子的写法: CREATE OR REPLACE PROCEDURE P_TEST_ 阅读全文
posted @ 2013-03-09 15:39 wingsless 阅读(1809) 评论(0) 推荐(0)
摘要:前一篇随笔被我写的乱七八糟的,于是新开一块。 从库建好了的准备工作开始写吧。 1 创建表空间: SQL> CREATE TABLESPACE WINGS DATAFILE 'D:\app\user\oradata\oracl\WINGS_F01.DB F' SIZE 50M AUTOEXTEND O 阅读全文
posted @ 2013-03-09 11:49 wingsless 阅读(777) 评论(0) 推荐(0)
摘要:今天收到一个同事的问题,有一段SQL跑了很久很久,根本没有结果,根据同事的反映,这个SQL一个月比一个月要慢。这是不被允许的事情,我们要做的就是对这个SQL进行一次优化。下面就是这次优化的记录。 首先说SQL: select t.month_id, t1.area_id, t1.local_id, 阅读全文
posted @ 2013-01-07 21:37 wingsless 阅读(4527) 评论(18) 推荐(6)