![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库技术
猴哥_IT小菜鸟
三分天注定七分靠打拼 爱拼才会赢
展开
-
mysql explain中的type列含义和extra列的含义
很多朋友在用mysql进行调优的时候都肯定会用到explain来看select语句的执行情况,这里简单介绍结果中两个列的含义。1 type列官方的说法,说这列表示的是“访问类型”,更通俗一点就是:mysql找到需要的数据行的方式。一下就是从效率最差到最好顺序分别介绍下:All 这个就是所谓的全表扫描,没有用到任何的index,mysql就是从头到尾把整个表遍历一边,找到所需要的数据行。效率是最差的。转载 2017-02-15 14:23:00 · 450 阅读 · 0 评论 -
Oracle和MySQL的数据类型对照
Oracle数据库类型:数据类型所属类型所占字节范围CHAR字符串类型CHAR(n) n个字节 存储固定长度的子字符串,如果没有明确说明长度,默认长度为1,如果长度不足规定长度,Oracle自动用空格填充1—2000VARCHAR2字符串类型可变长字符串类型。 VARCHAR2(n) n 如果最大长度不是n,不需要空格填充,推荐使用VARCHAR21—4000NCH转载 2017-02-14 13:59:50 · 357 阅读 · 0 评论 -
ORACLE和MYSQL的简单区别
最近在在学习数据库,用到了ORACLE和MYSQL,其中ORACLE我在过去的工作中稍有接触,对于ORACLE也只是刚摸到门路,而对于MYSQL 只是听说他是一个开源项目,基本上算是没接触过。这段时间二个数据库一起使用,难免会出现操作中混乱,我在这里大致归纳下我遇到最常见的问题。 1.在ORACLE中用select * from all_users显示所有的用户,而在MYSQL中显示转载 2017-02-14 13:59:09 · 218 阅读 · 0 评论 -
MySQL中int、bigint、smallint 和 tinyint的区别
MySQL使用整数数据的精确数字数据类型。bigint从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。int从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int 的转载 2017-02-14 13:57:29 · 151 阅读 · 0 评论 -
MySQL中的datetime与timestamp比较
相同显示TIMESTAMP列的显示格式与DATETIME列相同。换句话说,显示宽度固定在19字符,并且格式为YYYY-MM-DD HH:MM:SS。不同范围datetime 以’YYYY-MM-DD HH:MM:SS’格式检索和显示DATETIME值。支持的范围为’1000-01-01 00:00:00’到’9999-12-31 23:59:59’TIMESTAMP值不能早于1970或晚于转载 2017-02-14 13:56:54 · 126 阅读 · 0 评论 -
Java EE 应用中的事务
事务是企业应用开发中的重要概念,对于部分 Web 应用,事务也是非常重要的(试想一下,如果没有事务,ATM 和网银的操作将会使多么的危险)。下面我就对 Java EE 应用中各种事务技术做一个简介。数据库: 无论 Java EE 中采用了何种的事务技术,归根结底都是基于数据库的事务。不论是本地事务,还是分布式事务,都必须有数据库的支持才行。各种 Java EE 事务技术也都调用了数据转载 2017-02-14 13:56:23 · 165 阅读 · 0 评论 -
JDBC Statement,PreparedStatement,CallableStatement的区别
JDBC:Statement(接口) |PreparedStatement(接口) |CallableStatement(接口)以上三者为继承关系。1).概念:Statement:(用于执行不带参数的简单 SQL 语句) 每次执行sql语句,数据库都要执行sql语句的编译,最好用于仅执行一次查询并返回结果的情形,效率高于PreparedStatement.用法转载 2017-02-14 13:55:48 · 376 阅读 · 0 评论 -
JDBC的Statement和PreparedStatement区别
1.每一种数据库都会尽最大努力对预编译语句提供最大的性能优化.因为预编译语句有可能被重复调用.所以语句在被DB的编译器编译后的执行代码被缓存下来,那么下次调用时只要是相同的预编译语句就不需要编译,只要将参数直接传入编译过的语句执行代码中(相当于一个涵数)就会得到执行.这并不是说只有一个Connection中多次执行的预编译语句被缓存,而是对于整个DB中,只要预编译的语句语法和缓存中匹配.那么在任何时转载 2017-02-14 13:55:12 · 178 阅读 · 0 评论 -
JDBC批量插入、批量删除、批量更新
一、JDBC的批量插入二、JDBC的批量更新三、JDBC的批量删除方法一:使用PreparedStatement加批量的方法 try { Class.forName(“com.MySQL.jdbc.Driver”); conn = DriverManager.getConnection(o_url, userName, pas转载 2017-02-14 13:54:36 · 695 阅读 · 0 评论 -
MySql常用命令总结
第一招、MySQL服务的启动和停止net stop mysqlnet start mysql第二招、登陆mysql语法如下: mysql -u用户名 -p用户密码键入命令mysql -uroot -p, 回车后提示你输入密码,输入12345,然后回车即可进入到mysql中了,mysql的提示符是:mysql>注意,如果是连接到另外的机器上,则需要加入一个参数-h机器IP第三招、增加新转载 2017-02-14 13:53:55 · 188 阅读 · 0 评论 -
MySQL中varchar与char区别
MySQL中varchar最大长度是多少? 一. varchar存储规则:4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) 5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个,最大大小是65532字节 Mysql4中最大也不过是20个字节,但是Mysq转载 2017-02-14 11:03:53 · 234 阅读 · 0 评论 -
如何选择合适的MySQL存储引擎
MySQL有多种存储引擎:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。MySQL支持数个存储引擎作为对不同表的类型的处理器。MySQL存储引擎包括处理事务安全表的引擎和处理非事务安全表的引擎:◆ MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索能力。转载 2017-02-14 11:03:22 · 177 阅读 · 0 评论 -
使用MySQL命令直接导入导出SQL文件
1.MySQL中将数据库导出成SQL文件其实很简单的,就是一条语句就可以了,首先我们打开cmd,不用进mysql指令界面,直接按照下列格式将导出语句敲进去,然后再输入密码即可了:mysqldump -h[主机所在IP] -u[用户名] -p [要导出的数据库]>[导出的路径//[文件名].sql]好吧,直接这样看可能有点抽象,我们来举个例子,目前我的MYSQL中有一个数据库bookinfodb转载 2017-02-14 11:02:34 · 427 阅读 · 0 评论 -
MySQL 常用命令的使用
show tables或show tables from database_name;解释:显示当前数据库中所有表的名称show databases;解释:显示MySQL中所有数据库的名称show processlist;解释:显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。转载 2017-02-14 11:01:44 · 159 阅读 · 0 评论 -
MySQL 数据库中日期与时间函数FROM_UNIXTIME(), UNIX_TIMESTAMP()
1、FROM_UNIXTIME( unix_timestamp ) 参数:通常是壹个十位的数字,如:1344887103 返回值:有两种,可能是类似 ‘YYYY-MM-DD HH:MM:SS’ 这样的字符串,也有可能是类似于 YYYYMMDDHHMMSS.uuuuuu 这样的数字,具体返回什么取决于该函数被调用的形式。 1mysql> select FROM_UNIXTIME(13448871转载 2017-02-14 10:49:54 · 3211 阅读 · 0 评论 -
MySQL中NULL与空字符串
一些刚刚接触MySQL的孩子,经常会错误的认为NULL与空字符串’ ’是相同的。这看似是一件不重要的事情,但是在MySQL中,这两者是完全不同的。NULL是指没有值,而”则表示值是存在的,只不过是个空值。对于SQL的新手,NULL值的概念常常会造成混淆,他们常认为NULL与MySQL空字符串是相同的事。情况并非如此。例如,下述语句是完全不同的:MySQL> INSERT INTO my_table转载 2017-02-14 10:48:39 · 245 阅读 · 0 评论 -
Oracle与MySQL的几点区别
Oracle数据库与MySQL数据库的区别是本文我们主要介绍的内容,希望能够对您有所帮助。1.组函数用法规则mysql中组函数在select语句中可以随意使用,但在oracle中如果查询语句中有组函数,那其他列名必须是组函数处理过的,或者是group by子句中的列否则报错eg:select name,count(money) from user;这个放在mysql中没有问题在oracle中转载 2017-02-14 14:01:10 · 193 阅读 · 0 评论 -
ORACLE中like与instr性能大比拼
业务系统中t表中将近有1100万数据,很多时候,我们要进行字符串匹配,在SQL语句中,我们通常使用like来达到我们搜索的目标。但经过实际测试发现,like的效率与instr函数差别相当大。下面是一些测试结果:SQL> set timing onSQL> select count(*) from t where instr(title,’手册’)>0; COUNT(*)———-转载 2017-02-14 14:01:59 · 417 阅读 · 0 评论 -
Oracle 的并发与多版本
Oracle的默认隔离级是快照(Snapshot),写入事务不会阻塞读取事务,读取事务可以获取当前已提交值。DB2默认是游标稳定性(Cursor Stability),写入事务会阻塞读取事务。 Oracle对并发的支持不仅使用高效的锁定,还实现了一种多版本体系结构,它提供了一种受控但高度并发的数据访问。这里的多版本指的是可以同时地物化多个版本的数据,这也是Oracle提供读一致性视图转载 2017-02-14 14:02:27 · 445 阅读 · 0 评论 -
图解SQL的Join
对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚。Coding Horror上有一篇文章(实在不清楚为什么Coding Horror也被墙)通过 文氏图 Venn diagrams 解释了SQL的Join。我觉得清楚易懂,转过来。假设我们有两张表。Table转载 2017-02-14 14:12:26 · 192 阅读 · 0 评论 -
谈谈怎么实现Oracle数据库分区表
Oracle数据库分区是作为Oracle数据库性能优化的一种重要的手段和方法,做手头的项目以前,只聆听过分区的大名,感觉特神秘,看见某某高手在讨论会上夸夸其谈时,真是骂自己学艺不精,最近作GPS方面的项目,处理的数据量达到了几十GB,为了满足系统的实时性要求,必须提高数据的查询效率,这样就必须通过分区,以解燃眉之急!先说说分区的好处吧!1) 增强可用性:如果表的某个分区出现故障,表在其他分区的数转载 2017-02-14 14:11:57 · 222 阅读 · 0 评论 -
数据库的垂直切分和水平切分
数据切分可以是物理上的,对数据通过一系列的切分规则将数据分布到不同的DB服务器上,通过路由规则路由访问特定的数据库,这样一来每次访问面对的就不是单台服务器了,而是N台服务器,这样就可以降低单台机器的负载压力。数据切分也可以是数据库内的,对数据通过一系列的切分规则,将数据分布到一个数据库的不同表中,比如将article分为article_001,article_002等子表,若干个子表水平拼合有组成转载 2017-02-14 14:11:26 · 193 阅读 · 0 评论 -
数据库的读写分离
读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。 为什么要分库、分表、读写分? 单表的数据量限制,当单表数据量到一定条数之后数据库性能会显著下降。数据多了之后,对数据库的读、写就会很多。分库减少单台数据库的压力。接触过几个转载 2017-02-14 14:10:34 · 263 阅读 · 0 评论 -
Mysql分表,分区的区别和联系
一,什么是MySQL分表,分区什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看mysql分表的3种方法什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上,具体请参考mysql分区功能详细介绍,以及实例二,mysql分表和分区有什么区别呢1,实现方式上a),mysql的分表是真正的分表,一张表分成很多表后,每一个小表都是完正转载 2017-02-14 14:09:55 · 188 阅读 · 0 评论 -
三种东西永远不要放到数据库里
我已经在很多演讲里说过,改进你的系统的最好的方法是先避免做“蠢事”。我并不是说你或你开发的东西“蠢”,只是有些决定很容易被人们忽略掉其暗含的牵连,认识不到这样做对系统维护尤其是系统升级带来多大的麻烦。作为一个顾问,像这样的事情我到处都能见到,我还从来没有见过做出这样的决定的人有过好 的结果的。图片,文件,二进制数据既然数据库支持BLOB类型的数据,把文件塞进BLOB字段里一定没有错了!?错,不是转载 2017-02-14 14:09:14 · 160 阅读 · 0 评论 -
数据库分库分表(sharding)系列
目录;(一) 拆分实施策略和示例演示(二) 全局主键生成策略(三) 关于使用框架还是自主开发以及sharding实现层面的考量(四) 多数据源的事务处理(五) 一种支持自由规划无须数据迁移和修改路由代码的Sharding扩容方案(一) 拆分实施策略和示例演示 第一部分:实施策略图1.数据库分库分表(sharding)实施策略图解1.准备阶段对数据库进行分库分表(Sharding化)前,需要转载 2017-02-14 14:08:47 · 420 阅读 · 0 评论 -
Oracle SQL的硬解析和软解析
我们都知道在Oracle中每条SQL语句在执行之前都需要经过解析,这里面又分为软解析和硬解析。在Oracle中存在两种类型的SQL语句,一类为 DDL语句(数据定义语言),他们是从来不会共享使用的,也就是每次执行都需要进行硬解析。还有一类就是DML语句(数据操纵语言),他们会根据情况选择要么进行硬解析,要么进行软解析。DML语句:INSERT,UPDATE,DELETE,SELECTDDL语句:转载 2017-02-14 14:08:06 · 189 阅读 · 0 评论 -
Oracle的悲观锁和乐观锁
为了得到最大的性能,一般数据库都有并发机制,不过带来的问题就是数据访问的冲突。为了解决这个问题,大多数数据库用的方法就是数据的锁定。数据的锁定分为两种方法,第一种叫做悲观锁,第二种叫做乐观锁。什么叫悲观锁呢,悲观锁顾名思义,就是对数据的冲突采取一种悲观的态度,也就是说假 设数据肯定会冲突,所以在数据开始读取的时候就把数据锁定住。而乐观锁就是认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时转载 2017-02-14 14:07:28 · 249 阅读 · 0 评论 -
Oracle 索引介绍
1.1 索引的创建语法: CREATE UNIUQE | BITMAP INDEX <schema>.<index_name> ON <schema>.<table_name> (<column_name> | <expression> ASC | DESC, <column_name> | <expression> ASC | DESC,转载 2017-02-14 14:06:37 · 162 阅读 · 0 评论 -
Oracle索引优化
什么是索引 索引是建立在表的一列或多个列上的辅助对象,目的是加快访问表中的数据; Oracle存储索引的数据结构是B*树,位图索引也是如此,只不过是叶子节点不同B*数索引; 索引由根节点、分支节点和叶子节点组成,上级索引块包含下级索引块的索引数据,叶节点包含索引数据和确定行实际位置的rowid。索引的种类 非唯一索引(最常用) 唯一索引 位图索引 局部有转载 2017-02-14 14:06:00 · 336 阅读 · 0 评论 -
SQL优化器简介
基于规则的优化器 。总是使用索引 。总是从驱动表开始(from子句最右边的表) 。只有在不可避免的情况下,才使用全表扫描 。任何索引都可以 基于成本的优化器 。需要表、索引的统计资料 Analyze table customer compute statistics; Analyze table customer estimate statistics转载 2017-02-14 14:04:57 · 199 阅读 · 0 评论 -
Oracle执行计划介绍
本文介绍了ORACLE执行计划的一些基本概念,供学习应用。一.相关的概念ROWID的概念:ROWID是一个伪列,既然是伪列,那么这个列就不是用户定义,而是系统自己给加上的。对每个表都有一个ROWID的伪列,但是表中并不物理存储ROWID列的值。不过你可以像使用其它列那样使用它,但是不能删除改列,也不能对该列的值进行修改、插入。一旦一行数据插入数据库,则ROWID在该行的生命周期内是唯一的,即即使转载 2017-02-14 14:04:25 · 212 阅读 · 0 评论 -
Oracle中组合索引的使用详解
在Oracle中可以创建组合索引,即同时包含两个或两个以上列的索引。在组合索引的使用方面,Oracle有以下特点: 1、 当使用基于规则的优化器(RBO)时,只有当组合索引的前导列出现在SQL语句的where子句中时,才会使用到该索引; 2、 在使用Oracle9i之前的基于成本的优化器(CBO)时, 只有当组合索引的前导列出现在SQL语句的where子句中时,才可能会使用到该索引,转载 2017-02-14 14:03:36 · 490 阅读 · 0 评论 -
Oracle 分区表介绍
一. 分区表理论知识 Oracle提供了分区技术以支持VLDB(Very Large DataBase)。分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中。分区完全对应用透明。 Oracle的分区表可以包括多个分区,每个分区都是一个独立的段(SEGMENT),可以存放到不同的表空间中。查询时可以通过查询表来访问各个分区中的数据,也可以通过在查询时直接指定分区转载 2017-02-14 14:03:03 · 229 阅读 · 0 评论 -
JDBC性能小贴
本文收集了一些用于提升JDBC性能的方法。Java应用或者JavaEE Web应用的性能是很重要的,尤其是数据库后端对应用的性能影响。不知你是否经历过Java、JavaEE web应用非常慢的案例没有(处理一个简单的请求都要花上好几秒的时间用于数据库访问,分页、排序等)。下面这些贴士也许能提升Java应用的性能。它们非常简单同时还可以应用于其它编程语言,如果是用数据库作为后端存储的话。这几个JDBC转载 2017-02-14 10:47:24 · 164 阅读 · 0 评论 -
MySQL中ON DUPLICATE KEY UPDATE语法
如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。例如,如果列 a 为 主键 或 拥有UNIQUE索引,并且包含值1,则以下两个语句具有相同的效果:1INSERTINTOTABLE (a,c) VALUES转载 2017-02-14 09:58:19 · 292 阅读 · 0 评论 -
谈谈MySQL乱码和set names
SET NAMES utf8相当于SET character_set_client = utf8 用来设置客户端送给MySQL服务器的数据的 字符集SET character_set_results = utf8 服务器返回查询结果时使用的字符集SET character_set_connection = utf8 MySQL 服务器把客户端传来的数据,从character_set_clie转载 2017-02-13 18:19:26 · 280 阅读 · 0 评论 -
MySQL数据库命令行下的数据备份与恢复命令
1.备份命令:mysqldump -u用户名 -p密码 -h服务器IP 数据库名 > 备份文件名例如:mysqldump -uroot -p123456 -h192.168.1.2 discuz > /data/backup/discuz.sql 2.还原命令:MySQL -u用户名 -p密码 -h服务器IP 数据库名 < 备份文件名例如:mysql -uroot -p123456 -h192.1转载 2017-02-13 15:09:08 · 234 阅读 · 0 评论 -
MySQL查看和修改最大连接数
使用 MySQL 数据库的站点,当访问连接数过多时,就会出现 “Too many connections” 的错误。出现这种错误有两种情况,一种是网站访问量实在太大,服务器已经负担不起,此时就应该考虑负载均衡或者其它减少服务器压力的办法。另一种情况就是 MySQL 的最大连接数设置得太小,当访问量稍大就出现连接过多的错误。MySQL 默认的最大连接数为 100,可以在 mysql 客户端使用以下命转载 2017-02-13 15:08:34 · 182 阅读 · 0 评论 -
深入理解JDBC的超时设置
恰当的JDBC超时设置能够有效地减少服务失效的时间。本文将对数据库的各种超时设置及其设置方法做介绍。 真实案例:应用服务器在遭到DDos攻击后无法响应 在遭到DDos攻击后,整个服务都垮掉了。由于第四层交换机不堪重负,网络变得无法连接,从而导致业务系统也无法正常运转。安全组很快屏蔽了所有的DDos攻击,并恢复了网络,但业务系统却还是无法工作。通过分析系统的thread dump发现,业务系统停转载 2017-02-13 15:07:56 · 295 阅读 · 0 评论