数据库
文章平均质量分 71
liushengenai
虚心专注, 分享链接, 创造价值。
展开
-
select case when的一些用法
概述: sql语句中的case语句与高级语言中的switch语句,是标准sql的语法,适用于一个条件判断有多种值的情况下分别执行不同的操作。首先,让我们看一下CASE的语法。在一般的SELECT中,其语法格式如下:SELECT <myColumnSpec> =CASE <单值表达式> when <表达式值> then <SQL语句或者...原创 2013-11-13 19:52:06 · 223 阅读 · 0 评论 -
oracle错误代码大全(超详细)
ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出最大进程数 () ORA-00021: 会话附属于其它某些进程;无法转换会话 ORA-00022: 无效的会话 ID;访问被拒绝 ORA-00023: 会话引用进程私用内存;无法分离会话 ORA-00...原创 2014-10-07 22:55:44 · 160 阅读 · 0 评论 -
数据库设计---第一范式,第二范式,第三范式
范式:英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法。目前有迹可寻的共有8种范式,依次是:1NF,2NF,3NF,BCNF,4NF,5NF,DKNF,6NF。通常所用到的只是前三个范式,即:第一范式(1NF),第二范式(2N...原创 2017-07-03 10:38:19 · 113 阅读 · 0 评论 -
面向对象设计七大原则
1. 单一职责原则(Single Responsibility Principle) 每一个类应该专注于做一件事情。 2. 里氏替换原则(Liskov Substitution Principle) 超类存在的地方,子类是可以替换的。 3. 依赖倒置原则(Dependence Inversion Principle) 实现尽量依赖抽象,不依赖具体实现。...原创 2017-07-03 10:51:37 · 81 阅读 · 0 评论 -
数据库架构的演变
最近看了很多公司架构的演变的文章,发现其中的基本思路和架构演变都很类似,这里也总结一下数据库架构的演变以及演变背后的思路。单主机最开始网站一般都是由典型的LAMP架构演变而来的,一般都是一台linux主机,一台apache服务器,php执行环境以及mysql服务器,一般情况下,这些都在一台虚拟主机上,简称单主机模式。 单主机模式缺点:1 web服务器和mysql服务器公用一...原创 2017-07-11 09:45:55 · 78 阅读 · 0 评论 -
数据库Sharding的基本思想和切分策略
本文着重介绍sharding的基本思想和理论上的切分策略,关于更加细致的实施策略和参考事例请参考我的另一篇博文:数据库分库分表(sharding)系列(一) 拆分实施策略和示例演示 一、基本思想 Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题。不太严格的讲,对于海量数据的数据库,如果是因为表多而数据...原创 2017-07-11 09:58:45 · 108 阅读 · 0 评论 -
关于垂直切分Vertical Sharding的粒度
垂直切分的粒度指的是在做垂直切分时允许几级的关联表放在一个shard里.这个问题对应用程序和sharding实现有着很大的影响. 关联打断地越多,则受影响的join操作越多,应用程序为此做出的妥协就越大,但单表的路由会越简单,与业务的关联性会越小,就越容易使用统一机制处理.在此方向上的极端方案是:打断所有连接,每张表都配有路由规则,可以使用统一机制或框架自动处理.比如amoeba这样的框...原创 2017-07-11 09:59:41 · 93 阅读 · 0 评论 -
数据库分库分表(sharding)系列(二) 全局主键生成策略
本文将主要介绍一些常见的全局主键生成策略,然后重点介绍flickr使用的一种非常优秀的全局主键生成方案。关于分库分表(sharding)的拆分策略和实施细则,请参考该系列的前一篇文章:数据库分库分表(sharding)系列(一) 拆分实施策略和示例演示 本文原文连接: http://blog.csdn.net/bluishglc/article/details/7710738 ,转载请注明出处!...原创 2017-07-11 10:02:11 · 110 阅读 · 0 评论 -
【复杂SQL案例--行列转换】
MYSQL案例来源,感谢网友提供的案例,在其基础上面进行了,简化,尽管不满足数据库范式,但是足以说明问题 原始要求如下: 已知源表数据如下:PIDNumLoc 苹果11北京仓 香蕉22上海仓 大鸭梨44广州仓 苹果66深圳仓 ...原创 2017-07-12 20:30:49 · 178 阅读 · 0 评论 -
数据库分库分表(sharding)系列(三) 关于使用框架还是自主开发以及sharding实现层面的考量...
当团队对系统业务和数据库进行了细致的梳理,确定了切分方案后,接下来的问题就是如何去实现切分方案了,目前在sharding方面有不少的开源框架和产品可供参考,同时很多团队也会选择自主开发实现,而不管是选择框架还是自主开发,都会面临一个在哪一层上实现sharding逻辑的问题,本文会对这一系列的问题逐一进行分析和考量。本文原文连接: http://blog.csdn.net/bluishglc/a...原创 2017-07-12 20:35:27 · 126 阅读 · 0 评论 -
数据库分库分表(sharding)系列(四) 多数据源的事务处理
系统经sharding改造之后,原来单一的数据库会演变成多个数据库,如何确保多数据源同时操作的原子性和一致性是不得不考虑的一个问题。总体上看,目前对于一个分布式系统的事务处理有三种方式:分布式事务、基于Best Efforts 1PC模式的事务以及事务补偿机制。我们下面对这三种处理方式一一进行分析。本文原文链接:http://blog.csdn.net/bluishglc/article/de...原创 2017-07-12 20:35:38 · 136 阅读 · 0 评论 -
数据库分库分表(sharding)系列(五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案...
作为一种数据存储层面上的水平伸缩解决方案,数据库Sharding技术由来已久,很多海量数据系统在其发展演进的历程中都曾经历过分库分表的Sharding改造阶段。简单地说,Sharding就是将原来单一数据库按照一定的规则进行切分,把数据分散到多台物理机(我们称之为Shard)上存储,从而突破单机限制,使系统能以Scale-Out的方式应对不断上涨的海量数据,但是这种切分对上层应用来说是透明的,...原创 2017-07-12 20:35:49 · 212 阅读 · 0 评论 -
Mybatis分库分表扩展插件
对于一个刚上线的互联网项目来说,由于前期活跃用户数量并不多,并发量也相对较小,所以此时企业一般都会选择将所有数据存放在一个数据库中进行访问操作。但随着后续的市场推广力度不断加强,用户数量和并发量不断上升,这时如果仅靠一个数据库来支撑所有访问压力,几乎是在自寻死路。所以一旦到了这个阶段,大部分Mysql DBA就会将数据库设置成读写分离状态,也就是一个Master节点对应多个Salve节点。经过...原创 2017-07-12 20:36:01 · 335 阅读 · 0 评论 -
keep池
问题:有一张表,里面仅有几百最多不过几千条记录,而业务需要,每条都要对此表进行N(上万)次的查询操作,有什么方法可以大大缩短查询此表的响应时间? 解答(不一定是唯一方法,但是很有效):将此表放于keep池中, keep池的数据可以只要被load进内存以后,就可以常驻内存中,哪怕使用alter system flush shared pool也不会将他们调出,这样就可以大大提高这些...原创 2014-10-07 15:44:24 · 181 阅读 · 0 评论 -
oracle sql 随机读取N条数据
关键字:order by dbms_random.value 以下是几个不同的数据库随机取数据的sql 1、MySql Select * From TABLE Order By Rand() Limit N 2、SQL ServerSelect TOP N * From TABLE Order By NewID() NewID()函数将创...原创 2014-09-24 22:41:48 · 430 阅读 · 0 评论 -
恢复oracle中误删除drop掉的表
查看回收站中表select object_name,original_name,partition_name,type,ts_name,createtime,droptime from recyclebin;恢复表SQL>flashback table test_drop to before drop;或SQL>flashback table "BIN$b+XkkO1RS...原创 2013-11-26 14:33:16 · 91 阅读 · 0 评论 -
oracle上写触发器
见附件原创 2014-05-26 15:14:42 · 91 阅读 · 0 评论 -
同义词
Oracle的同义词(synonyms)从字面上理解就是别名的意思,和试图的功能类似,就是一种映射关系。本文介绍如何创建同义词语句,删除同义词以及查看同义词语句。 oracle的同义词总结: 从字面上理解就是别名的意思,和试图的功能类似。就是一种映射关系。 1.创建同义词语句: create public synonym table_name for user.table_name...原创 2014-05-29 17:39:46 · 122 阅读 · 0 评论 -
Oracle中创建dblink的方法
当用户要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。下面讲介绍如何在本地数据库中创建dblink. 创建dblink一般有两种方式,不过在创建dblink之前用户必须有创建dblink的权限。想知道有关dblink的权限,以sys用户登录到本地数据库: select ...原创 2014-05-29 17:47:39 · 83 阅读 · 0 评论 -
oracle 表空间的分类与作用
users表空间:如果不写,就放在你这个用户的默认表空间里,一般都是users,这个表空间是系统自己建立的;用户自定义的表空间:用于存放用户建立的该项目所有的表、索引、存储过程、触发器、序列等内容;临时表空间:在Oracle数据库中进行排序、分组汇总、索引等用到时,会产生很多的临时数据,会使用临时表空间.你就将它当成电脑的虚拟内存. ...原创 2014-03-19 10:29:33 · 1150 阅读 · 0 评论 -
高手详解SQL性能优化十条经验
1.查询的模糊匹配尽量避免在一个复杂查询里面使用 LIKE '%parm1%'—— 红色标识位置的百分号会导致相关列的索引无法使用,最好不要用.解决办法:其实只需要对该脚本略做改进,查询速度便会提高近百倍。改进方法如下:a、修改前台程序——把查询条件的供应商名称一栏由原来的文本输入改为下拉列表,用户模糊输入供应商名称时,直接在前台就帮忙定位到具体的供应商,这样在调用后台程序时,...原创 2014-03-19 17:43:55 · 79 阅读 · 0 评论 -
建立索引的原则 与 索引的分类
建立索引的原则: (1)定义有主键的数据列一定要建立索引。因为主键可以加速定位到表中的某一行 (2)定义有外间的数据列一定要建立索引。外键列通常用于表与表之间的连接,在其上创建索引可以加快表间的连接。 (3)对于经常查询的数据列最好建立索引。 索引的分类: (1)聚集索引:对表和视图进行物理排序,在表和视图中只能有一个聚集索引。当建立主键约束时,如果表中没有聚集索引,...原创 2014-03-21 10:52:30 · 230 阅读 · 0 评论 -
Oracle 存储过程(procedure)和函数(Function)的区别
1. 返回值的区别,函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有 2.调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用. 函数一般情况下是用来计算并返回一个计算结果而存储过程一般是用来完成特定的数据操作(比如修改、插入数据库表或执行某些DDL语句等等) ...原创 2013-10-17 11:17:36 · 166 阅读 · 0 评论 -
binary_float、binary_double 、number
Oracle中引入了两种新的数据类型:binary_float和binary_double。这两种数据类型是对number数据类型的补充。Binary_float:存储一个单精度的32位浮点数。Binary_double:存储一个双精度的64位浮点数。number 可存储整型、也可存储小数,但存储小数时数据被格式化了,如283038.55803527放在库里可能变...原创 2013-11-01 10:57:08 · 1448 阅读 · 0 评论 -
Got minus one from a read call异常
Caught: java.sql.SQLException: Io 异常: Got minus one from a read call使用JDBC连接Oracle时,多次出现上述错误,后来去网上找了下,基本提供的方法有这么几种:1:数据库连接满了,扩大数据库连接池2:所登录的机子IP不在sqlnet.ora内,加入后重启listerner即可3:数据库负载均衡时,指定了(SERVER=DEDI...原创 2013-11-03 19:07:29 · 241 阅读 · 0 评论 -
oracle long类型总结
1、LONG 数据类型中存储的是可变长字符串,最大长度限制是2GB。 2、对于超出一定长度的文本,基本只能用LONG类型来存储,数据字典中很多对象的定义就是用LONG来存储的。 3、LONG类型主要用于不需要作字符串搜索的长串数据,如果要进行字符搜索就要用varchar2类型。 4、很多工具,包括SQL*Plus,处理LONG 数据类型都是很困难的。 5、LONG 数据类型的使用中,要受限于磁盘的...原创 2014-04-16 12:53:52 · 198 阅读 · 0 评论 -
Oracle树查询
Oracle树查询的最重要的就是select...start with... connect by ...prior 语法了。依托于该语法,我们可以将一个表形结构的中以树的顺序列出来。在下面列述了Oracle中树型查询的常用查询方式以及经常使用的与树查询相关的Oracle特性函数等,在这里只涉及到一张表中的树查询方式而不涉及多表中的关联等。 以我做过的一个项目中的表为例,表结构如...原创 2014-09-24 22:29:09 · 90 阅读 · 0 评论 -
MySQL数据的主从复制、半同步复制和主主复制详解
一、MySQL复制概述 ⑴、mysql数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费多久,不容乐观的未来,但是我们还是要能熟练掌握MySQL数据的架构和安全备份等功能,毕竟现在它还算是开源界的老大吧! MySQL数据库支持同步复制、单向、异步复制,在复制的...原创 2017-07-17 19:50:20 · 129 阅读 · 0 评论