数据库_Mysql_Oracle_Sqlite_MongoDB
文章平均质量分 56
hjm4702192
这个作者很懒,什么都没留下…
展开
-
解决 oracle IO占用率很高的问题
突然user io占用率很很高,看了一个AWR报告,发现direct path read temp,direct path write temp的的数率很高,后来怀疑是临时表空间不够了,就试着设了一下让临时表自动增长,问题就解决了。可爽!具体如下,用红色字休就方法就行了:1、查看临时表空间select tablespace_name,file_name,bytes/1024/1024 file_s原创 2016-07-21 16:37:12 · 15470 阅读 · 0 评论 -
如何正确的理解和解决 ORA-01843:not a valid month
今天码代码的时候遇到了这个问题,因为oracle用的比较少,所在查询了一下。顿时傻眼,有很多的贴子说是因为nls_date_language的问题,还要改会话级的NLS_DATE_LANGUAGE设置为简体中文,还有些别的,等等。我当时就无语了,我觉得大部分楼主都是在自己玩玩oracle的吧,虽然也算是因素,但如果是在正经项目中,谁会让你去改这种东西?!后来发现了正确的做法,如下:to_date(原创 2014-08-05 14:14:40 · 47948 阅读 · 1 评论 -
ORACLE ORA-01653: unable to extend table 的错误
ORACLE ORA-01653: unable to extend table 的错误今天用PL SQL Developer往oracle数据库中导入数据时,突然报错,只能终止,错误的具体内容如下:ORA-01653: unable to extend table USER_DATA.JKHDFXJL by 128 in tablespace MSMS大概意思是说USER_DATA表空间不足了,转载 2014-07-16 14:41:16 · 1436 阅读 · 0 评论 -
mysql选择联合索引还是单索引?索引列应该使用哪一个最有效?深入测试探讨
先建表 CREATE TABLE `menu_employee` ( `Id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键,无实际意义', `employee_pid` int(5) DEFAULT NULL COMMENT '父节点序号,一般是部门的序号,但是已有例外,没有组的员工', `employee_id` int(5)原创 2014-04-23 14:05:56 · 1728 阅读 · 0 评论 -
GROUP BY 的实现与优化
由于GROUP BY实际上也同样需要进行排序操作,而且与ORDER BY相比,GROUP BY主要只是多了排序之后的分组操作。当然,如果在分组的时候还使用了其他的一些聚合函数,那么还需要一些聚合函数的计算。所以,在GROUP BY的实现过程中,与ORDERBY一样也可以利用到索引。在MySQL中,GROUP BY的实现同样有多种(三种)方式,其中有两种方式会利用现有的索引信息来完成转载 2014-04-23 14:15:38 · 1109 阅读 · 0 评论 -
mysql filesort 的解决方案
在explain我们所使用的sql的时候,经常会遇到using filesort这种情况,原以为是由于有相同列值的原因引起,结果昨天看到公司的一个sql,跟同事讨论了下加上自己又做了一些测试,突然发现自己原来的想法是错误的。首先,只有在order by数据列的时候才可能会出现using filesort,而且如果你不对进行order by的这一列设置索引的话,无论列值是否有相同的都原创 2014-04-23 14:11:04 · 1353 阅读 · 0 评论 -
MySQL 如何使用索引 较为详细的分析和例子
在数据库表中,使用索引可以大大提高查询速度。 假如我们创建了一个 testIndex表: CREATE TABLE testIndex(i_testID INT NOT NULL,vc_Name VARCHAR(16) NOTNULL); 我们随机向里面插入了 1000条记录,其中有一条 i_testID vc_Name 555 erquan 在查找 vc_Name="原创 2014-04-23 14:09:27 · 5805 阅读 · 0 评论 -
为什么会存在using filesort
当使用explain分析SQL时常常会遇到extra的其中一值为using filesort,如: PRIMARY KEY (`id`), KEY `uid` (`uid`) explain select * from t_talbe where uid=1order by id;extra结果为:Using where; Using filesort手册中对原创 2014-04-23 14:12:05 · 1812 阅读 · 0 评论 -
mysql DISTINCT 的实现与优化
DISTINCT实际上和GROUP BY的操作非常相似,只不过是在GROUP BY之后的每组中只取出一条记录而已。所以,DISTINCT的实现和GROUP BY的实现也基本差不多,没有太大的区别。同样可以通过松散索引扫描或者是紧凑索引扫描来实现,当然,在无法仅仅使用索引即能完成DISTINCT的时候,MySQL只能通过临时表来完成。但是,和GROUP BY有一点差别的是,DISTINC转载 2014-04-23 14:14:15 · 3249 阅读 · 0 评论 -
oracle 选取出现次数最多的前5条数据
SELECT *FROM ( SELECT PROJECT_LISTING.MATERIAL, COUNT (*) AS "出现次数" FROM PROJECT_LISTING WHERE PROJECT_LISTING.MATERIAL IS NOT NULL GROUP BY PROJECT_LISTING.MATERIAL ORDER原创 2014-05-08 11:30:06 · 3323 阅读 · 1 评论 -
精通mysql之精通EXPLAIN
EXPLAIN列的解释:table:显示这一行的数据是关于哪张表的type:这是重要的列,显示连接使用了何种类型。从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALLpossible_keys:显示可能应用在这张表中的索引。如果为空,没有可能的索引。可以为相关的域从WHERE语句中选择一个合适的语句key: 实原创 2014-03-23 22:08:56 · 1533 阅读 · 0 评论 -
oracle的rownum与having用法 去除重复 在重复情况用rownum
一般来说,大家会用rownum,也就是伪列来指定要显示多条数据,比如select linename from aced where rownum但是,大家注意,如果取出来的数据有重复数据,用rownum是达不了你要的效果的。比如你要取5条数据,其中四条是重复,那你最后只能得到两条。那该肿么办呢,解决办法如下:SELECT*FROM(SELE原创 2014-03-19 17:30:35 · 5987 阅读 · 0 评论 -
oracle中去重复记录 不用distinct
用distinct关键字只能过滤查询字段中所有记录相同的(记录集相同),而如果要指定一个字段却没有效果,另外distinct关键字会排序,效率很低 。select distinct name from t1 能消除重复记录,但只能取一个字段,现在要同时取id,name这2个字段的值。select distinct id,name from t1 可以取多个字段,但只能消除这2个字段转载 2014-03-19 17:23:39 · 1601 阅读 · 0 评论 -
Mysql join语句的优化
Mysql4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的SQL操作,同时也可以避免事务或者表锁死,并且写起来也很容易。但是,有些情况下,子查询可以被更有效率的连接JOIN替代。假设我们要将所有没有订单记录的用户取出来,可以用下面这个查询完成: SEL转载 2014-07-11 10:54:06 · 857 阅读 · 0 评论 -
Mysql insert语句的优化
1) 如果你同时从同一客户插入很多行,使用多个值表的INSERT语句。这比使用分开INSERT语句快(在一些情况中几倍)。 Insert into test values(1,2),(1,3),(1,4)…2) 如果你从不同客户插入很多行,能通过使用INSERT DELAYED语句得到更高的速度。Delayed的含义是让insert 语句马上执行,其实数据都被放在内存的队列中,并没有真正写入原创 2014-07-11 14:21:26 · 1236 阅读 · 0 评论 -
oracle手工生成AWR报告方法记录
AWR(Automatic Workload Repository)报告是我们进行日常数据库性能评定、问题SQL发现的重要手段。熟练掌握AWR报告,是做好开发、运维DBA工作的重要基本功。 AWR报告的原理是基于Oracle数据库的定时镜像功能。默认情况下,Oracle数据库后台进程会以一定间隔(一小时)收集系统当前状态镜像,并且保存在数据库中。生成AWR报告时,只需要指定进行分析的时间段(开始转载 2016-07-01 17:16:57 · 3101 阅读 · 0 评论 -
log file sync 等侍值高的一般通用解决办法
log file sync等待时间发生在redo log从log buffer写入到log file期间。下面对log file sync做个详细的解释。何时发生日志写入:1.commit或者rollback2.每3秒3.log buffer 1/3满或者已经有1M的redo数据。 更精确的解释:_LOG_IO_SIZE 大小默认是LOG_BUFFER的1/3,当log buffer中r转载 2016-07-01 17:03:49 · 10853 阅读 · 2 评论 -
log file sync 因为数据线有问题而造成高等侍的表现
这是3月份某客户的情况,原因是服务器硬件故障后进行更换之后,业务翻译偶尔出现提交缓慢的情况。我们先来看下awr的情况。 我们可以看到,该系统的load profile信息其实并不高,每秒才21个transaction。先来看看top5events:从top 5event,我们可以发现,log file sync的avg wait非常之高,高达124ms。转载 2016-07-01 17:00:55 · 2720 阅读 · 0 评论 -
Oracle RAC的五大优势及其劣势
不同的集群产品都有自己的特点,RAC的特点包括如下几点: ·双机并行。RAC是一种并行模式,并不是传统的主备模式。也就是说,RAC集群的所有成员都可以同时接收客户端的请求。 ·高可用性。RAC是Oracle数据库产品高可用性的解决方案,能够保证在集群中只要有一个节点存活,就能正常对外提供服务。 ·易伸缩性。RAC可以非常容易地添加、删除节点,以满足系统自身的调整。 ·低成本。能使用较低廉的原创 2016-07-12 17:00:04 · 8331 阅读 · 0 评论 -
Oracle 执行计划(Explain Plan) 说明
如果要分析某条SQL的性能问题,通常我们要先看SQL的执行计划,看看SQL的每一步执行是否存在问题。 如果一条SQL平时执行的好好的,却有一天突然性能很差,如果排除了系统资源和阻塞的原因,那么基本可以断定是执行计划出了问题。 看懂执行计划也就成了SQL优化的先决条件。 这里的SQL优化指的是SQL性能问题的定位,定位后就可以解决问题。 一. 查看执行计划转载 2015-05-06 10:49:11 · 1542 阅读 · 0 评论 -
ORA-12519: TNS:no appropriate service handler found 解决
select count(*) from v$process --当前的连接数select value from v$parameter where name = 'processes' --数据库允许的最大连接数修改最大连接数:alter system set processes = 300 scope = spfile;重启数据库:shutdown immediate;startup;--查看原创 2015-04-04 16:24:47 · 2425 阅读 · 0 评论 -
ORA-28001: the password has expired 详解 不用重启项目
大早上正式库提示:Oracle提示错误消息ORA-28001: the password has expired解决办法:1、利用SYSDBA权限登陆;2、查看账户信息:select username,account_status from dba_users3、如果账户locked/expired, 得先解锁: alter user BJMMIS account unlock;转载 2015-03-03 22:29:35 · 2502 阅读 · 0 评论 -
mysql 字符集查看 设定
(1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值,如 default-character-set = utf8 character_set_server = utf8修改完后,重启mysql的服务,service mysql restart使用 mysql> SHOW VARIABLES LIKE 'character%';查看,发现数据库编码均已改成utf8+----转载 2014-11-11 23:28:37 · 1087 阅读 · 0 评论 -
SQL递归查询(with cte as)
with cte as( select Id,Pid,DeptName,0 as lvl from Department where Id = 2 union all select d.Id,d.Pid,d.DeptName,lvl+1 from cte c inner join Department d on c.Id = d.Pid)select * from c转载 2014-09-25 16:56:17 · 1174 阅读 · 0 评论 -
Mysql group by语句的优化
默认情况下,MySQL排序所有GROUP BY col1, col2, ....,查询的方法如同在查询中指定ORDER BY col1, col2, ...。如果显式包括一个包含相同的列的ORDER BY子句,MySQL可以毫不减速地对它进行优化,尽管仍然进行排序。如果查询包括GROUP BY但你想要避免排序结果的消耗,你可以指定ORDER BY NULL禁止排序。例如: INSERT I转载 2014-07-11 14:20:01 · 897 阅读 · 0 评论 -
Mysql大量插入数据时SQL语句的优化
1) 对于Myisam类型的表,可以通过以下方式快速的导入大量的数据。 ALTER TABLE tblname DISABLE KEYS; loading the data ALTER TABLE tblname ENABLE KEYS;这两个命令用来打开或者关闭Myisam表非唯一索引的更新。在导入大量的数据到一个非空的Myisam表时,通过设置这两个命令,可以提高导入的效率转载 2014-07-11 14:24:53 · 911 阅读 · 0 评论 -
Mysql SQL Mode详解
Mysql SQL Mode简介MySQL服务器能够工作在不同的SQL模式下,并能针对不同的客户端以不同的方式应用这些模式。这样,应用程序就能对服务器操作进行量身定制以满足自己的需求。这类模式定义了MySQL应支持的SQL语法,以及应该在数据上执行何种确认检查。这样,就能在众多不同的环境下、与其他数据库服务器一起更容易地使用MySQL。可以使用“--sql-mode="modes"”选项,通过启动转载 2014-07-11 14:23:20 · 1037 阅读 · 0 评论 -
oracle ORA-00917: missing comma 是因为少逗号
oracle ORA-00917: missing comma 是因为少逗号,而且不是网上盛传的空格问题!都是传言误人啊原创 2014-04-30 10:48:31 · 42714 阅读 · 0 评论 -
sql 如何应对子查询返回数据有多条 我就是要返回数据有多条
sql 如何应对子查询返回数据有多条 我就是要返回数据有多条原创 2014-03-14 11:21:55 · 6880 阅读 · 0 评论 -
MySQL的表分区
一、什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表。mysql5.1开始支持数据表分区了。如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区。当然也可根据其他的条件分区。 二、为什么要对表进行分区为了改善大型表以及具有各种访问模式的表的可伸缩性,可管理性和提高数据库效率。分区的一些优点包括: 1)、与单原创 2013-12-09 21:56:28 · 1166 阅读 · 0 评论 -
论 mysql 主键
什么是主键:表中经常有一个列或列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。 作用:原创 2013-01-09 13:56:58 · 2076 阅读 · 0 评论 -
详细了解SQLITE 优缺点 性能测试
什么是SQLITE: SQLite是一个开源免费的数据库,一般用于嵌入系统或者小规模的应用软件开发中,你可以像使用Access一样使用它,你可以免费用于任何应用,包括商业应用,另外,它还支持各种平台和开发工具,这点是某些数据库(比如Access、DBISAM)。SQLite是一种嵌入式数据库,它跟微软的Access差不多,只是一个.db格式的文件。但是与Access不同的是,它不需原创 2012-12-11 16:20:12 · 7278 阅读 · 1 评论 -
MySQL 深入剖析 char varchar 类型,有了VARCHAR,为什么还要有CHAR?
前言:相信大家都用过这两种类型,可能觉得它们两个太像了,好像没有什么区别,用这两个都可以存文字和数字还有空格和标点符号。在设计数据库的时候,也的确不太能区分什么时候用CHAR,什么时候用VARCHAR.今天就详细的查看和测试了一下这两个字段,并记录下来了。相信也会给大家一个很好的参考。---------------------------------------原创 2012-12-25 20:10:41 · 3761 阅读 · 2 评论 -
centos 5.5 mysql5.5 乱码
1. 找到mysql的配置文件,拷贝到etc目录下,第一步很重要使用find命令查找cnf文件。记得不要去找my.cnf因为它不一定存在,而应该找*.cnf。[root@linuxserver classes] find / -iname *.cnf -print/root/Desktop/mysql-5.0.56/mysql-test/std_data/ndb_config_mycn原创 2012-11-19 15:28:08 · 939 阅读 · 0 评论 -
mysql 各个字段的 详细解说
mysql中text,longtext,mediumtext字段类型的意思MySQL支持大量的列类型,它可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型。本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述。概述有意简化,更详细的说明应该考虑到有关特定列类型的附加信息,例如你能为其指定值的允许格式。由MySQL支持的列原创 2012-11-12 17:29:05 · 970 阅读 · 0 评论 -
11步教你选择最稳定的MySQL版本
MySQL开源数据库有多个重要分支,目前拥有的分支分别为:MySQL Cluster、MySQL 5.1、MySQL 5.5、MySQL 6.2。每个分支都有着同样的的MySQL数据库版本,分别为:Development版本、Alpha版本、Beta版本、RC版本和GA版本。 Development 版本、Alpha版本和Beta版 MySQL开源数据库有多个重要分支,目前拥有的原创 2012-10-11 10:20:56 · 1455 阅读 · 0 评论 -
android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第三部分,完整代码)
让我们来建一个整体的实例Person实体 package com.jbridge.domain; import android.R.string; public class Person { private Integer id; private String name;原创 2012-07-25 10:53:10 · 2383 阅读 · 1 评论 -
android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第一部分)
使用嵌入式关系型SQLite数据库存储数据除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据。在Android平台上,集成了一个嵌入式关系型数据库—SQLite,1、SQLite3支持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型虽然只有五种,但实原创 2012-07-24 16:24:53 · 39737 阅读 · 5 评论 -
android sqlite SQLiteDatabase 操作大全 不看后悔!必收藏!看后精通SQLITE (第二部分)
使用SQLiteOpenHelper对数据库进行版本管理如果应用使用到了SQLite数据库,在用户初次使用软件时,需要创建应用使用到的数据库表结构及添加一些初始化记录,另外在软件升级的时候,也需要对数据表结构进行更新。在Android系统,为我们提供了一个名为SQLiteOpenHelper的类,该类用于对数据库版本进行管理,该类是一个抽象类,必须继承它才能使用。 为了实现对数原创 2012-07-24 17:19:39 · 5979 阅读 · 1 评论 -
MySQL Innodb数据库性能实践
在实际工作中,经常有同事问道:MySQL Innodb表记录数多大是合适的?一般的理解肯定是表越大性能越低,但具体低多少呢,是缓慢下降还是急剧下降,是1000万就下降还是1亿才下降呢?针对这些问题,我做了一下基准测试,基准测试环境如下:【硬件配置】硬件配置CPUIntel(R) Xeon(R) CPU E5620 主频2.40GHz, 物理CPU 2个,逻辑CPU原创 2012-07-17 17:15:10 · 859 阅读 · 0 评论