随笔分类 - 学习——数据库
摘要:原文地址: http://tech.meituan.com/mysql-index.html MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上
阅读全文
摘要:1.XAXA是由X/Open组织提出的分布式事务的规范。XA规范主要定义了(全局)事务管理器(Transaction Manager)和(局部)资源管理器(Resource Manager)之间的接口。XA接口是双向的系统接口,在事务管理器(Transaction Manager)以及一个或多个资源...
阅读全文
摘要:第一范式:具有原子性第二范式:主键列与非主键列遵循完全函数依赖关系第三范式:非主键列之间没有传递函数依赖关系 简介 数据库范式在数据库设计中的地位一直很暧昧,教科书中对于数据库范式倒是都给出了学术性的定义,但实际应用中范式的应用却不甚乐观,这篇文章会用简单的语言和一个简单的数据库DEMO将一个不符合
阅读全文
摘要:数据库高可用架构对于我们这些应用端开发的人来说是一个比较陌生的领域,是在具体的数据库产品之上搭建的环境,需要像DBA这样对数据库产品有足够的了解才能有所涉及,虽然不能深入其中,但可以通过一些经典的高可用架构学习其中的思想。就我所了解到的有以下几种:MySQL ReplicationMySQL Clu...
阅读全文
摘要:大部分时候,我们都习惯了spring容器默认的配置,但有时候,我们需要知道更多……当使用声明式事务模型时,您必须告诉容器如何去管理事务,例如,何时开启一个事务?哪些方法需要事务?当前不存在事务的情况下,容器是否需要为其添加事务控制?事实上,Spring提供了一个bean ——TransactionA...
阅读全文
摘要:前者是非unicode型,存储字符按1个算(内部空间存储占1字节),存储汉字的话按2个算,就是可以存10个字符或者5个汉字后者是unicode型,存储什么都是按1个算(内部空间存储占2字节),就是可以存10个字符或10个汉字varchar(10)与nvarchar(10)就是分别占10个字节和20个...
阅读全文
摘要:1、内联接(典型的联接运算,使用像 = 或 之类的比较运算符)。包括相等联接和自然联接。 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students和courses表中学生标识号相同的所有行。 2、外联接。外联接可以是左向外联接、右向外联接或完整...
阅读全文
摘要:第1章 引言随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的 互联网应用,每天几十亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。通过数据切分来提高网站性能,横向扩展数据层 已经成为架构研发人员首选的方式。水平切分数据库,可以降...
阅读全文
摘要:单库单表单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到。单库多表随着用户数量的增加,user表的数据量会越来越大,当数据量达到一定程度的时候对user表的查询会渐渐的变慢,从而影响整个DB的性能。如果使用mysql,还有一个...
阅读全文
摘要:1 事务的传播属性(Propagation)1) REQUIRED ,这个是默认的属性Support a current transaction, create a new one if none exists.如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。被设置成这个级别时,会...
阅读全文
摘要:oracle和Mysql两种数据库悲观锁和乐观锁机制及乐观锁实现方式:一、OracleOracle数据库悲观锁与乐观锁是本文我们主要要介绍的内容。有时候为了得到最大的性能,一般数据库都有并发机制,不过带来的问题就是数据访问的冲突。为了解决这个问题,大多数数据库用的方法就是数据的锁定。数据的锁定分为两...
阅读全文
摘要:myisam存储引擎默认是表级锁innodb存储引擎默认是行级锁DBD存储引擎默认是页面锁表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发出锁冲突的概率最高,并发度最低。行级锁:开锁大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。页面锁:开销和加锁时间界于表锁和行锁之间...
阅读全文
摘要:地址:http://blog.csdn.net/column/details/sharding.html
阅读全文
摘要:概念:在数据中事务是工作的逻辑单元,一个事务是有一个获多个完成一组的相关行为的Sql语句组成。通过事务机制确保这一组sql语句所作的操作要么完全执行成功,要么一点也不执行。主要特征:确保数据库的完整性事务的ACID特性:A是事务的原子性:事务中包含的所有操作要么全做,要么全不做,也就是说所有的活动在...
阅读全文
摘要:-----解决方案--------------------------------------------------------过滤URL中的一些特殊字符,动态SQL语句使用PrepareStatement..------解决方案--------------------------------------------------------注入的方式就是在查询条件里加入SQL字符串.可以检查一下提交的查询参数里是否包含SQL,但通常这样无益.最好的办法是不要用拼接SQL字符串,可以用prepareStatement,参数用set方法进行填装------解决方案----------------
阅读全文
摘要:1.导出整个数据库mysqldump -u 用户名 -p --default-character-set=latin1 数据库名 > 导出的文件名(数据库默认编码是latin1)mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql2.导出一个表mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql3.导出一个数据库结构mysqldump -u wcnc -p -d –add-drop-table smg
阅读全文
摘要:1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=03.应尽量避免在 where 子句中使用!=或操作符,否则将引擎放弃使用索引而进行全表扫描。4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进
阅读全文
摘要:转载:关于数据库优化方面的文章很多,但是有的写的似是而非,有的不切实际,对一个数据库来说,只能做到更优,不可能最优,并且由于实际需求不同,优化方案还是有所差异,根据实际需要关心的方面(速度、存储空间、可维护性、可拓展性)来优化数据库,而这些方面往往又是相互矛盾的,下面结合网上的一些看法和自己的一些观点做个总结。 一个系统的性能的提高,不单单是试运行或者维护阶段的性能调优,也不单单是开发阶段的事情,而是在整个软件生命周期都需要注意。所以我希望按照软件生命周期的不同阶段来总结数据库性能优化相关的注意事项。 一、 分析阶段 一般来说,在系统分析阶段往往有太多需要关注的地方,系统各种功能性、可用...
阅读全文
摘要:转载:一、索引的概念 索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。二、索引的特点 1.索引可以加快数据库的检索速度 2.索引降低了数据库插入、修改、删除等维护任务的速度 3.索引创建在表上,不能创建在视图上 4.索引既可以直接创建,也可以间接创建 5.可以在优化隐藏中,使用索引 6.使用查询处理器执行SQL语句,在一个表上,一次只能使用一个索引 7.其他三、索引的优点 ...
阅读全文
摘要:1:MySQL 是基于limit的:select * from t_user where limit ?, ? ; 第一个参数表示起始位置, 第二个参数表示页面大小 2:Orcal 是基于ROWNUM的:在Oracle中,用SQL来实现分页有很多种实现方式,但有些语句可能并不是很通用,只能用在一些特殊场景之中;以下介绍三种比较通用的实现方案;在以下各种实现中,ROWNUM是一个最核心的关键词,在查询时他是一个虚拟的列,取值为1到记录总数的序号;首先来介绍我们工作中最常使用的一种实现方式:SELECT * FROM (SELECT ROW_.*, ROWNUM ROWNUM_ ...
阅读全文