
数据库
大树叶
宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒。
展开
-
JDBC与MySQL 时间差了14或13小时: 时区 CST 惹的祸
背景知识:CST时区:名为CST的时区是一个很混乱的时区,有四种含义:美国中部时区Central Standard Time(USA)UTC-06:00澳大利亚中部时区中央标准时间(澳大利亚)UTC + 09:30中国标准时中国标准时区UTC + 08:00古巴标准时古巴标准时区UTC-04:00问题分析:原因:CST的时区是一个很混乱的时区,Java JDBC 和Mysql...原创 2020-03-19 00:04:08 · 1226 阅读 · 0 评论 -
Mysql命令create table:创建数据表
reate table命令用来创建数据表。create table命令格式:create table ( [,.. ]);例如,建立一个名为MyClass的表:字段名数字类型数据宽度是否为空是否主键自动增加默认值idint4否primary keyauto_increment原创 2016-03-01 21:37:57 · 1504 阅读 · 0 评论 -
MySQL cluster
MySQL cluster和Oracle RAC完全不同,它采用Shared-nothing架构。整个集群由管理节点(ndb_mgmd),处理节点(mysqld)和存储节点(ndbd)组 成,不存在一个共享的存储设备。MySQL cluster主要利用了NDB存储引擎来实现,NDB存储引擎是一个内存式存储引擎,要求数据必须全部加载到内存之中。数据被自动分布在集群中的不同存 储节点上,每个存储节原创 2016-03-17 00:57:09 · 673 阅读 · 0 评论 -
MySQL Cluster(MySQL 集群) 实战
MySQL Cluster 是MySQL适合于分布式计算环境的高实用、高冗余版本。它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器。在MyQL 5.0及以上的二进制版本中、以及与最新的Linux版本兼容的RPM中提供了该存储引擎。(注意,要想获得MySQL Cluster 的功能,必须安装 mysql-server 和 mysql-max RPM)。转载 2016-03-17 14:07:36 · 444 阅读 · 0 评论 -
数据库分片技术
假如您有一个应用程序,随着业务越来越有起色,系统所牵涉到的数据量也就越来越大,此时您要涉及到对系统进行伸缩(Scale)的问题了。一种典型的扩展方法叫做“向上伸缩(Scale Up)”,它的意思是通过使用更好的硬件来提高系统的性能参数。而另一种方法则叫做“向外伸缩(Scale Out)”,它是指通过增加额外的硬件(如服务器)来达到相同的效果。从“硬件成本”还是“系统极限”的角度来说,“向外伸缩”一转载 2016-03-30 02:30:04 · 1291 阅读 · 0 评论 -
mysql cluster在线添加数据节点
增加或减少数据节点的数量和NoOfReplicas(即副本数,通过管理节点的config.ini配置文件来设置)有关,一般来说NoOfReplicas是2,那么增加或减少的数量也应该是成对的,否则要设置另外的NoOfReplicas。首先必须确保新加入的数据节点作为新的group加入,默认2个node为1个group,Group数量=Node总数/NoOfReplicas数。1.修改管理节转载 2016-03-18 12:54:09 · 1544 阅读 · 0 评论 -
存储过程的优点和缺点
优点①重复使用。存储过程可以重复使用,从而可以减少数据库开发人员的工作量。②减少网络流量。存储过程位于服务器上,调用的时候只需要传递存储过程的名称以及参数就可以了,因此降低了网络传输的数据量。③安全性。参数化的存储过程可以防止SQL注入式攻击,而且可以将Grant、Deny以及Revoke权限应用于存储过程。简单讲:1.存储过程只在创造时进行编译,以后每次执行存储过程都不需转载 2016-03-30 21:16:23 · 4057 阅读 · 0 评论 -
SQL 左连 右连 内连和外连
SQL 两个主要的连接类型是内连接和外连接。1) 内连接只保留交叉积中满足连接条件的那些行。如果某行在一个表中存在,但在另一个表中不存在,则结果表中不包括该信息。2) 外连接是内连接和左表和/或右表中未包括内连接中的那些行的并置。当对两个表执行外连接时,可任意将一个表指定为左表而将另一个表指定为右表。外连接有三种类型: 2.1 左外连接包括内连接和左表中未包括在内连接中的那些行。原创 2016-02-21 12:35:10 · 1093 阅读 · 0 评论 -
数据库索引的设计原则
索引定义:是一个单独的,存储在磁盘上的数据库结构,其包含着对数据表里所有记录的引用指针.为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引。那么索引设计原则又是怎样的?1.选择唯一性索引唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。转载 2016-02-24 01:08:14 · 1301 阅读 · 0 评论 -
大型数据库设计原则
一个好的数据库产品不等于就有一个好的应用系统,如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能。一般来讲,在一个MIS系统分析、设计、测试和试运行阶段,因为数据量较小,设计人员和测试人员往往只注意到功能的实现,而很难注意到性能的薄弱之处,等到系统投入实际运行一段时间后,才发现系统的性能在降低,这时再来考虑提高系统性能则要花费更多的人原创 2016-02-24 01:14:26 · 470 阅读 · 0 评论 -
数据库设计14个技巧
1. 原始单据与实体之间的关系 可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。 在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体。 这里的实体可以理解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。 〖例1〗:一份员工履历资料,在人力资源信息系统中,原创 2016-02-24 01:19:50 · 472 阅读 · 0 评论 -
大型数据库设计原则
命名的规范不同的数据库产品对对象的命名有不同的要求,因此,数据库中的各种对象的命名、后台程序的代码编写应采用大小写敏感的形式,各种对象命名长度不要超过30个字符,这样便于应用系统适应不同的数据库。游标(Cursor)的慎用游标提供了对特定集合中逐行扫描的手段,一般使用游标逐行遍历数据,根据取出的数据不同条件进行不同的操作。尤其对多表和大表定义的游标(大的数据集合)循环很容易原创 2016-02-24 01:21:35 · 438 阅读 · 0 评论 -
MySQL 数据库设计初步规范
1,表设计规范1.1关于表设计a) 表名、列名必须有注释。b) 命名应使用富有意义的英文词汇或者缩写,多个单词组成的,全部大写,以"_"分隔开来,只能使用英文字母,数字和下划线,不留空格。比如USER_DETALL,不允许使用关键字TYPE或者STATUS等来作为字段名。c) 命名长度不超过15个字符为宜(避免超过20转载 2016-02-24 01:28:20 · 550 阅读 · 0 评论 -
Tomcat配置DataSource
一、数据源简介:************************************************************************************在Java语言中,DataSource对象就是一个代表数据源实体的对象。一个数据源就是一个用来存储数据的工具,它可以是复杂的大型企业级数据库,也可以是简单得只有行和列的文件。数据源可以位于在服务器端,转载 2016-03-09 20:00:22 · 4186 阅读 · 0 评论 -
JPA Hibernate 和数据库 的 锁机制
本文总结Java中有关数据库保存持久数据的锁机制,不只是纯粹数据库自身的锁,本文主要就Java持久层三个技术数据库、JPA和Hibernate的锁应用进行了总结。 在并发理论中,锁是用于保护可变的共享数据,以保证数据的完整性,大多数应用程序都是依赖于数据库本身提供的隐藏在数据库机制内的锁技术,很多初学者可能都没有意识到。 将整个系统的锁职责委托给数据库系统,虽然可以简化应用程序原创 2016-02-24 22:00:15 · 2466 阅读 · 0 评论 -
乐观锁和悲观锁
乐观锁是在同一个数据库事务中我们常采取的策略,因为它能使得我们的系统保持高的性能的情况下,提高很好的并发访问控制。乐观锁,顾名思义就是保持一种乐观的态度,我们认为系统中的事务并发更新不会很频繁,即使冲突了也没事,大不了重新再来一次。它的基本思想就是每次提交一个事务更新时,我们想看看要修改的东西从上次读取以后有没有被其它事务修改过,如果修改过,那么更新就会失败。因为乐观锁其实并不会锁定任何记原创 2016-02-24 23:30:03 · 411 阅读 · 0 评论 -
Tomca:8 + Mysql5 + JNDI + Eclipse4 配置数据源
1:在eclipse 中建立一个动态web 项目2:在WebContent -> META-INF 下建立一个content.xmlcontent.xml内容如下: WEB-INF/web.xml ${catalina.base}/conf/web.xml type="javax.sql.原创 2016-03-13 15:57:50 · 635 阅读 · 0 评论 -
主从 mysql (master slave) 复制原理及配置
1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服转载 2016-03-29 23:48:46 · 1699 阅读 · 0 评论 -
Java反射及其在开发数据库上面的运用
一、什么是反射机制 简单的来说,反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息。 二、哪里用到反射机制 有些时候,我们用过一些知识,但是并不知道它的专业术语是什么,在刚刚学jdbc时用过一行代码, Class.forName("com.mysql.jdbc.原创 2016-03-14 14:21:07 · 1592 阅读 · 0 评论 -
Eclipse提示Tomcat settings should be set in Tomcat Preference Page
原文地址:http://blog.knowsky.com/211423.htmwindow->preferences->tomcat->选择tomcat version->然后在tomcat base输入Tomcat主目录(如D:\tools\tomcat\apache-tomcat-8.0.29)下面的参数会自动配置,点击apply。然后在左边选择advanced,同转载 2016-03-02 16:37:29 · 6340 阅读 · 0 评论 -
复合索引如何用
JD面试:复合索引如何用索引可以包含一个、两个或更多个列。两个或更多个列上的索引被称作复合索引。利用索引中的附加列,您可以缩小搜索的范围,但使用一个具有两列的索引不同于使用两个单独的索引。复合索引的结构与电话簿类似,人名由姓和名构成,电话簿首先按姓氏对进行排序,然后按名字对有相同姓氏的人进行排序。如果您知道姓,电话簿将非常有用;如果您知道姓和名,电话簿则更为有用,但如果您只知道名不姓,原创 2016-04-26 23:29:39 · 8370 阅读 · 0 评论 -
怎样才能更好的防范 SQL inject 攻击
1.使用参数化的过滤性语句 要防御SQL注入,用户的输入就绝对不能直接被嵌入到SQL语句中。恰恰相反,用户的输入必须进行过滤,或者使用参数化的语句。参数化的语句使用参数而不是将用户输入嵌入到语句中。在多数情况中,SQL语句就得以修正。然后,用户输入就被限于一个参数。下面是一个使用Java和JDBCAPI例子: PreparedStatement prep = conn.prepar转载 2016-05-10 11:12:08 · 909 阅读 · 0 评论 -
SQL注入攻击的种类和防范手段有哪些?
首先要清楚SQL注入攻击有哪些种类。1.没有正确过滤转义字符在用户的输入没有为转义字符过滤时,就会发生这种形式的注入式攻击,它会被传递给一个SQL语句。这样就会导致应用程序的终端用户对数据库上的语句实施操纵。比方说,下面的这行代码就会演示这种漏洞:statement := "SELECT * FROM users WHERE name = '" + userName + "转载 2016-05-10 11:32:12 · 1580 阅读 · 0 评论 -
SQL注入攻击三部曲之入门篇
服务器安全管理员和攻击者的战争仿佛永远没有停止的时候,针对国内网站的ASP架构的SQL注入攻击又开始大行其道。本篇文章通过SQL注入攻击原理引出SQL注入攻击的实施方法,旨在企业安全管理员能够通过技术学习提升自己的安全意识。第一节、SQL注入原理 以下我们从一个网www.mytest.com开始(注:本文发表前已征得该站站长同意,大部分都是真实数据)。在网站首页上,有名为“IE不能打开转载 2016-05-10 12:24:12 · 463 阅读 · 0 评论 -
SQL注入攻击三部曲之进阶篇
通过入门篇的学习,我们知道了SQL注入攻击的判断方法,但是如果想侵入网站,获取网站的机密内容,那么仅靠入门篇的知识是无法达到的。本篇文章我们将进一步的分析SQL注入攻击。首先,我们先看看SQL注入的一般步骤:第一节、SQL注入的一般步骤 首先,判断环境,寻找注入点,判断数据库类型,这在入门篇已经讲过了。其次,根据注入参数类型,在脑海中重构SQL语句的原貌,按参数类型主要分为下面三种转载 2016-05-10 12:25:46 · 457 阅读 · 0 评论 -
SQL注入攻击三部曲之高级篇
经过了入门篇和进阶篇的学习,相信诸位想要破解一般的网站是没有什么问题了,但是先别得意。正所谓学海无涯,技术的进步也是没有止境的。SQL注入是一个看起来简单,但是变数很多的过程。接下来的高级篇让我们更加深入地探讨SQL注入问题。第一节、利用系统表注入SQLServer数据库 SQL Server是一个功能强大的数据库系统,与操作系统也有紧密的联系,这给开发者带来了很大的方便,但另一方面,也为转载 2016-05-10 13:10:55 · 998 阅读 · 0 评论 -
MySQL索引背后的数据结构及算法(吐血推荐)
本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为四个部分。第转载 2016-04-28 17:53:55 · 592 阅读 · 0 评论 -
Mysql 乐观锁
悲观锁并不是适用于任何场景,它也有它存在的一些不足,因为悲观锁大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。如果加锁的时间过长,其他用户长时间无法访问,影响了程序的并发访问性,同时这样对数据库性能开销影响也很大,特别是对长事务而言,这样的开销往往无法承受。所以与悲观锁相对的,我们有了乐观锁,具体参见下面介绍: 乐观锁介绍:乐观锁( Optimistic Locking转载 2016-05-03 17:13:45 · 787 阅读 · 0 评论 -
mysql 悲观锁 的运用
使用场景举例:以MySQL InnoDB为例商品t_goods表中有一个字段status,status为1代表商品未被下单,status为2代表商品已经被下单,那么我们对某个商品下单时必须确保该商品status为1。假设商品的id为1。一、如果不采用锁,那么操作方法如下://1.查询出商品信息select status from t_goods where id=1;//2.根转载 2016-05-03 16:23:24 · 1091 阅读 · 0 评论 -
MySQL修改数据表存储引擎的3种方法介绍
MySQL作为最常用的数据库,经常遇到各种各样的问题。今天要说的就是表存储引擎的修改。有三种方式,列表如下。1.真接修改。在数据多的时候比较慢,而且在修改时会影响读取性能。my_table是操作的表,innoDB是新的存储引擎。复制代码代码如下:ALTER TABLE my_table ENGINE=InnoDB2.导出,导入。这个比较容易操作,直接把导转载 2016-05-06 00:29:38 · 1635 阅读 · 0 评论 -
MySQL的多种存储引擎总结
MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。MySQL支持数个存储引擎作为对不同表的类型的处理器。MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎:·转载 2016-05-06 00:33:51 · 542 阅读 · 0 评论 -
MYSQL show engine等实用 command
看DB参数和数据用:show status;mysql> show status;看存储引擎参数:mysql> show engine innodb status\G;*************************** 1. row *************************** Type: InnoDB Name: Status: ==原创 2016-05-06 14:30:34 · 1762 阅读 · 0 评论 -
MySql避免重复插入记录方法
MySql避免重复插入记录方法1:ignore2:Replace3) ON DUPLICATE KEY UPDATE本文章来给大家提供三种在mysql中避免重复插入记录方法,主要是讲到了ignore,Replace,ON DUPLICATE KEY UPDATE三种方法,各位同学可尝试参考。案一:使用ignore关键字如果是用主键primary或者唯一索引u转载 2016-05-06 15:38:14 · 518 阅读 · 0 评论 -
mysql 左连接 右连接
1、内联接(典型的联接运算,使用像 = 或 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students和courses表中学生标识号相同的所有行。 2、外联接。外联接可以是左向外联接、右向外联接或完整外部联接。 在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定: 1)LEFT JOIN或LEFT原创 2016-05-06 17:05:51 · 800 阅读 · 0 评论 -
MySQL 性能优化的最佳20多条经验分享
当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。1. 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行转载 2016-05-31 00:41:42 · 546 阅读 · 0 评论 -
mysql大表更新sql的优化策略
问题sql背景:项目有6个表的要根据pid字段要写入对应的brand_id字段。但是这个其中有两个表是千万级别的。我的worker运行之后,线上的mysql主从同步立刻延迟了!运行了一个多小时之后,居然延迟到了40分钟,而且只更新了十几万行数据。问题sql如下: UPDATE $tableName$ SET brand_id = #newBrandId# WHERE pid = #转载 2016-05-31 00:57:09 · 693 阅读 · 0 评论 -
Mysql的列索引和多列索引
Mysql数据库提供两种类型的索引,如果没正确设置,索引的利用效率会大打折扣却完全不知问题出在这。CREATE TABLE test ( id INT NOT NULL, last_name CHAR(30) NOT NULL, first_name CHAR(30) NOT NULL, PRIMARY KEY (id), INDEX原创 2016-05-06 16:23:23 · 591 阅读 · 0 评论 -
pt-query-digest查询日志分析工具
1. 工具简介pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分转载 2016-05-06 23:16:11 · 924 阅读 · 0 评论 -
mysql 聚簇索引 和聚簇索引 (二级索引)的 那些事
mysql的聚簇索引是指innodb引擎的特性,mysiam并没有,如果需要该索引,只要将索引指定为主键(primary key)就可以了。比如:create table blog_user( user_Name char(15) not null check(user_Name !=''), user_Password char(15) not null, user_emi原创 2016-05-06 23:47:21 · 22780 阅读 · 7 评论 -
mysql cluster的常见问题
MySQL Cluster是MySQL适合于分布式计算环境的高实用、高冗余版本。它采用了NDB Cluster存储引擎,允许在1个Cluster中运行多个MySQL服务器。MySQL Cluster是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的Cluster。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。原创 2016-05-07 01:10:44 · 8218 阅读 · 0 评论