使用sys或者system登陆数据库使用命令select from dba_users;查看哪些用户USERNAME面HR说明用户看ACCOUNT_STATUS字段账号加锁状态通
SQL>alter user 用户名 identified by 新密码 ;修改用户密码!
1、打开微信,然后点击手机屏幕右上角的加号按钮,点击添加朋友。
2、选择公众号,其次输入“海鹰数据”,点击关注。
3、接下来需要在关注之后进入公众号,点击左下角“报告查询”,如下图所示。
4、然后输入个人姓名,手机号码以及,身份z号码就可以查看了近1500项个人数据了,如下图所示。
最商业的是ORACLE,做的最专业,然后是微软的SQLserver,做的也很好,当然还有DB2等做得也不错,这些都是大型的数据库,如果掌握的全面的话,可以保证数据的安全然后就是些小的数据库aess,mysql等,适合于中小企业的数据库100万数据一下的数据。
oracle ,db2 和sql server 都可以处理百万的数据量
你可以根据你们公司的情况选择合适的数据库类型了
oracle和db2可以在多平台下运行
sqlserver只能在Windows下运行
db2价格比较昂贵,对硬件要求也比较高
oracle对管理员的要求较高
反正很多因素了
你可以根据实际情况选择
大数据正在如何改变数据库格局
提及“数据库”,大多数人会想到拥有30多年风光历史的RDBMS。然而,这可能很快就会发生改变。
一大批新的竞争者都在争夺这一块重要市场,他们的方法是多种多样的,却都有一个共同点:极其专注于大数据。推动新的数据迭代衍生品大部分都是基于底层大数据的3V特征:数量,速度和种类。本质上来讲,今天的数据比以往任何时候都要传输更快,体积更大,同时更加多样化。这是一个新的数据世界,换言之,传统的关系数据库管理系统并没有真正为此而设计。“基本上,他们不能扩展到大量,或快速,或不同种类的数据。”一位数据分析、数据科学咨询机构的总裁格雷戈里认为。这就是哈特汉克斯最近发现。截至到2013年左右,营销服务机构使用不同的数据库,包括MicrosoftSQLServer和Oracle真正应用集群(RAC)的组合。“我们注意到,数据随着时间的增长,我们的系统不能足够快速的处理信息”一位科技发展公司的负责人肖恩说到。“如果你不断地购买服务器,你只能继续走到这幺远,我们希望确保自己有向外扩展的平台。”最小化中断是一个重要的目标,Iannuzzi说到,因此“我们不能只是切换到Hadoop。”相反,却选择了拼接机器,基本上把完整的SQL数据库放到目前流行的Hadoop大数据平台之上,并允许现有的应用程序能够与它连接,他认为。哈特汉克斯现在是在执行的初期阶段,但它已经看到了好处,Iannuzzi说,包括提高容错性,高可用性,冗余性,稳定性和“性能全面提升”。一种完美风暴推动了新的数据库技术的出现,IDC公司研究副总裁CarlOlofson说到。首先,“我们正在使用的设备与过去对比,处理大数据集更加快速,灵活性更强”Olofson说。在过去,这样的集合“几乎必须放在旋转磁盘上”,而且数据必须以特定的方式来结构化,他解释说。现在有64位寻址,使得能够设置更大的存储空间以及更快的网络,并能够串联多台计算器充当单个大型数据库。“这些东西在不可用之前开辟了可能性”Olofson说。与此同时,工作负载也发生了变化。10年前的网站主要是静态的,例如,今天我们享受到的网络服务环境和互动式购物体验。反过来,需要新的可扩展性,他说。公司正在利用新的方式来使用数据。虽然传统上我们大部分的精力都放在了对事务处理_销售总额的记录,比如,数据存储在可以用来分析的地方_现在我们做的更多。应用状态管理就是一个例子假设你正在玩一个网络游戏。该技术会记录你与系统的每个会话并连接在一起,以呈现出连续的体验,即使你切换设备或各种移动,不同的服务器都会进行处理,Olofson解释说。数据必须保持连续性,这样企业才可以分析问题,例如“为什么从来没有人穿过水晶厅”。在网络购物方面,为什么对方点击选择颜色后大多数人不会购买某个特殊品牌的鞋子。“以前,我们并没试图解决这些问题,或者我们试图扔进盒子也不太合适”Olofson说。Hadoop是当今新的竞争者中一个重量级的产品。虽然他本身不是一个数据库,它的成长为企业解决大数据扮演关键角色。从本质上讲,Hadoop是一个运行高度并行应用程序的数据中心平台,它有很强的可扩展性。通过允许企业扩展“走出去”的分布方式,而不是通过额外昂贵的服务器“向上”扩展,“它使得我们可以低成本地把一个大的数据集汇总,然后进行分析研究成果”Olofson说。其他新的RDBMS的替代品如NoSQL家族产品,其中包括MongoDB-目前第四大流行数据库管理系统,比照DB引擎和MarkLogic非结构化数据存储服务。“关系型数据库一直是一项伟大的技术持续了30年,但它是建立在不同的时代有不同的技术限制和不同的市场需求,”MarkLogic的执行副总裁乔·产品帕卡说。大数据是不均匀的,他说。许多传统的技术,这仍然是一个基本要求。“想象一下,你的笔记本电脑上唯一的程序是Excel”帕卡说。“设想一下,你要和你的朋友利用网络保持联系_或者你正在写一个合约却不适合放进行和列中。”拼接数据集是特别棘手的“关系型,你把所有这些数据集中在一起前,必须先决定如何去组织所有的列,”他补充说。“我们可以采取任何形式或结构,并立即开始使用它。”NoSQL数据库没有使用关系数据模型,并且它们通常不具有SQL接口。尽管许多的NoSQL存储折中支持速度等其他因素,MarkLogic为企业定身量做,提供更为周全的选择。NoSQL储存市场有相当大的增长,据市场研究媒体,不是每个人都认为这是正确的做法-至少,不是在所有情况下。NoSQL系统“解决了许多问题,他们横向扩展架构,但他们却抛出了SQL,”一位CEO-MonteZweben说。这反过来,又为现有的代码构成问题。SpliceMachine是一家基于Hadoop的实时大数据技术公司,支持SQL事务处理,并针对OLAP和OLAP应用进行实时优化处理。它被称为替代NewSQL的一个例子,另一类预期会在未来几年强劲增长。“我们的理念是保持SQL,但横向扩展架构”Zweben说。“这是新事物,但我们正在努力试图使它让人们不必重写自己的东西。”深度信息科学选择并坚持使用SQL,但需要另一种方法。公司的DeepSQL数据库使用相同的应用程序编程接口(API)和关系模型如MySQL,意味着没有应用变化的需求而使用它。但它以不同的方式处理数据,使用机器学习。DeepSQL可以自动适应使用任何工作负载组合的物理,虚拟或云主机,该公司表示,从而省去了手动优化数据库的需要。该公司的首席战略官ChadJones表示,在业绩大幅增加的同时,也有能力将“规模化”为上千亿的行。一种来自Algebraix数据完全不同的方式,表示已经开发了数据的第一个真正的数学化基础。而计算器硬件需在数学建模前建成,这不是在软件的情况下,Algebraix首席执行官查尔斯银说。“软件,尤其是数据,从未建立在数学的基础上”他说,“软件在很大程度上是语言学的问题。”经过五年的研发,Algebraix创造了所谓的“数据的代数”集合论,“数据的通用语言”Silver说。“大数据肮脏的小秘密是数据仍然放在不与其他数据小仓融合的地方”Silver解释说。“我们已经证明,它都可以用数学方法来表示所有的集成。”配备一个基础的平台,Algebraix现在为企业提供业务分析作为一种服务。改进的性能,容量和速度都符合预期的承诺。时间会告诉我们哪些新的竞争者取得成功,哪些没有,但在此期间,长期的领导者如Oracle不会完全停滞不前。“软件是一个非常时尚行业”安德鲁·门德尔松,甲骨文执行副总裁数据库服务器技术说。“事情经常去从流行到不受欢迎,回再次到流行。”今天的许多创业公司“带回炒冷饭少许抛光或旋转就可以了”他说。“这是一个新一代孩子走出学校和重塑的东西。”SQL是“唯一的语言,可以让业务分析师提出问题并得到答案,他们没有程序员,”门德尔松说。“大市场将始终是关系型。”至于新的数据类型,关系型数据库产品早在上世纪90年代发展为支持非结构化数据,他说。在2013年,甲骨文的同名数据库版本12C增加了支持JSON(JavaScript对象符号)。与其说需要一个不同类型的数据库,它更是一种商业模式的转变,门德尔松说。“云,若是每个人都去,这将破坏这些小家伙”他说。“大家都在云上了,所以在这里有没有地方来放这些小家伙?“他们会去亚马逊的云与亚马逊竞争?”他补充说。“这将是困难的。”甲骨文有“最广泛的云服务”门德尔松说。“在现在的位置,我们感觉良好。”Gartner公司的研究主任里克·格林沃尔德,倾向于采取了类似的观点。“对比传统强大的RDBMS,新的替代品并非功能齐全”格林沃尔德说。“一些使用案例可以与新的竞争者来解决,但不是全部,并非一种技术”。展望未来,格林沃尔德预计,传统的RDBMS供货商感到价格压力越来越大,并为他们的产品增加新的功能。“有些人会自由地带来新的竞争者进入管理自己的整个数据生态系统”他说。至于新的产品,有几个会生存下来,他预测“许多人将被收购或资金耗尽”。今天的新技术并不代表传统的RDBMS的结束,“正在迅速发展自己”IDC的Olofson。赞成这种说法,“RDBMS是需要明确定义的数据_总是会有这样一个角色。”但也会有一些新的竞争者的角色,他说,特别是物联网技术和新兴技术如非易失性内存芯片模块(NVDIMM)占据上风。对于数据库系统而言,绝大多数情况下影响数据库性能的三个要素是:数据运算能力、数据读写时延和数据吞吐带宽,简称计算、时延、吞吐。计算指的是CPU的运算能力,时延是数据从存储介质跑到CPU所需的时间长短,吞吐则是数据从存储介质到CPU的道路宽度。一般情况下,关注计算和时延是比较多的,但是在数据量越来越多的情况下,吞吐也成为影响数据库性能的重要因素。如果吞吐带宽不够,会造成计算等待队列的增加,CPU占用率虚高不下。这种情况下,即使增加再多的计算资源也于事无补,相当于千军万马挤独木桥,马再好也是枉然。一个高性能的数据库平台,一定是计算、时延、吞吐三方面的能力齐头并进,相互匹配。
通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码,从而提高性能。
下面将提供一些在JAVA程序的设计和编码中,为了能够提高JAVA程序的性能,而经常采用的一些方法和技巧。
1.对象的生成和大小的调整。
JAVA程序设计中一个普遍的问题就是没有好好的利用JAVA语言本身提供的函数,从而常常会生成大量的对象(或实例)。由于系统不仅要花时间生成对象,以后可能还需花时间对这些对象进行垃圾回收和处理。因此,生成过多的对象将会给程序的性能带来很大的影响。
例1:关于String ,StringBuffer,+和append
JAVA语言提供了对于String类型变量的 *** 作。但如果使用不当,会给程序的性能带来影响。如下面的语句:
String name=new String("HuangWeiFeng");
Systemoutprintln(name+"is my name");
看似已经很精简了,其实并非如此。为了生成二进制的代码,要进行如下的步骤和 *** 作:
(1) 生成新的字符串 new String(STR_1);
(2) 复制该字符串;
(3) 加载字符串常量"HuangWeiFeng"(STR_2);
(4) 调用字符串的构架器(Constructor);
(5) 保存该字符串到数组中(从位置0开始);
(6) 从javaioPrintStream类中得到静态的out变量;
(7) 生成新的字符串缓冲变量new StringBuffer(STR_BUF_1);
(8) 复制该字符串缓冲变量;
(9) 调用字符串缓冲的构架器(Constructor);
(10) 保存该字符串缓冲到数组中(从位置1开始);
(11) 以STR_1为参数,调用字符串缓冲(StringBuffer)类中的append方法;
(12) 加载字符串常量"is my name"(STR_3);
(13) 以STR_3为参数,调用字符串缓冲(StringBuffer)类中的append方法;
(14) 对于STR_BUF_1执行toString命令;
(15) 调用out变量中的println方法,输出结果。
由此可以看出,这两行简单的代码,就生成了STR_1,STR_2,STR_3,STR_4和STR_BUF_1五个对象变量。这些生成的类的实例一般都存放在堆中。堆要对所有类的超类,类的实例进行初始化,同时还要调用类极其每个超类的构架器。而这些 *** 作都是非常消耗系统资源的。因此,对对象的生成进行限制,是完全有必要的。
经修改,上面的代码可以用如下的代码来替换。
StringBuffer name=new StringBuffer("HuangWeiFeng");
Systemoutprintln(nameappend("is my name")toString());
系统将进行如下的 *** 作:
(1) 生成新的字符串缓冲变量new StringBuffer(STR_BUF_1);
(2) 复制该字符串缓冲变量;
(3) 加载字符串常量"HuangWeiFeng"(STR_1);
(4) 调用字符串缓冲的构架器(Constructor);
(5) 保存该字符串缓冲到数组中(从位置1开始);
(6) 从javaioPrintStream类中得到静态的out变量;
(7) 加载STR_BUF_1;
(8) 加载字符串常量"is my name"(STR_2);
(9) 以STR_2为参数,调用字符串缓冲(StringBuffer)实例中的append方法;
(10) 对于STR_BUF_1执行toString命令(STR_3);
(11)调用out变量中的println方法,输出结果。
由此可以看出,经过改进后的代码只生成了四个对象变量:STR_1,STR_2,STR_3和STR_BUF_1你可能觉得少生成一个对象不会对程序的性能有很大的提高。但下面的代码段2的执行速度将是代码段1的2倍。因为代码段1生成了八个对象,而代码段2只生成了四个对象。
代码段1:
String name= new StringBuffer("HuangWeiFeng");
name+="is my";
name+="name";
代码段2:
StringBuffer name=new StringBuffer("HuangWeiFeng");
nameappend("is my");
nameappend("name")toString();
因此,充分的利用JAVA提供的库函数来优化程序,对提高JAVA程序的性能时非常重要的其注意点主要有如下几方面;
(1) 尽可能的使用静态变量(Static Class Variables)
如果类中的变量不会随他的实例而变化,就可以定义为静态变量,从而使他所有的实例都共享这个变量。
例:
public class foo
{
SomeObject so=new SomeObject();
}
就可以定义为:
public class foo
{
static SomeObject so=new SomeObject();
}
(2) 不要对已生成的对象作过多的改变。
对于一些类(如:String类)来讲,宁愿在重新生成一个新的对象实例,而不应该修改已经生成的对象实例。
例:
String name="Huang";
name="Wei";
name="Feng";
上述代码生成了三个String类型的对象实例。而前两个马上就需要系统进行垃圾回收处理。如果要对字符串进行连接的 *** 作,性能将得更差,因为系统将不得为此生成更多得临时变量,如上例1所示。
(3) 生成对象时,要分配给它合理的空间和大小JAVA中的很多类都有它的默认的空间分配大小。对于StringBuffer类来讲,默认的分配空间大小是16个字符。如果在程序中使用StringBuffer的空间大小不是16个字符,那么就必须进行正确的初始化。
(4) 避免生成不太使用或生命周期短的对象或变量。对于这种情况,因该定义一个对象缓冲池。以为管理一个对象缓冲池的开销要比频繁的生成和回收对象的开销小的多。
(5) 只在对象作用范围内进行初始化。JAVA允许在代码的任何地方定义和初始化对象。这样,就可以只在对象作用的范围内进行初始化。从而节约系统的开销。
例:
SomeObject so=new SomeObject();
If(x==1) then
{
Foo=sogetXX();
}
可以修改为:
if(x==1) then
{
SomeObject so=new SomeObject();
Foo=sogetXX();
}
2.异常(Exceptions)
JAVA语言中提供了try/catch来发方便用户捕捉异常,进行异常的处理。但是如果使用不当,也会给JAVA程序的性能带来影响。因此,要注意以下两点:
(1) 避免对应用程序的逻辑使用try/catch
如果可以用if,while等逻辑语句来处理,那么就尽可能的不用try/catch语句。
(2) 重用异常
在必须要进行异常的处理时,要尽可能的重用已经存在的异常对象。以为在异常的处理中,生成一个异常对象要消耗掉大部分的时间。
3 线程(Threading)
一个高性能的应用程序中一般都会用到线程。因为线程能充分利用系统的资源。在其他线程因为等待硬盘或网络读写而 时,程序能继续处理和运行。但是对线程运用不当,也会影响程序的性能。
例2:正确使用Vector类
Vector主要用来保存各种类型的对象(包括相同类型和不同类型的对象)。但是在一些情况下使用会给程序带来性能上的影响。这主要是由Vector类的两个特点所决定的。第一,Vector提供了线程的安全保护功能。即使Vector类中的许多方法同步。但是如果你已经确认你的应用程序是单线程,这些方法的同步就完全不必要了。第二,在Vector查找存储的各种对象时,常常要花很多的时间进行类型的匹配。而当这些对象都是同一类型时,这些匹配就完全不必要了。因此,有必要设计一个单线程的,保存特定类型对象的类或集合来替代Vector类用来替换的程序如下(StringVectorjava):
public class StringVector
{
private String [] data;
private int count;
public StringVector()
{
this(10); // default size is 10
}
public StringVector(int initialSize)
{
data = new String[initialSize];
}
public void add(String str)
{
// ignore null strings
if(str == null) { return; }
ensureCapacity(count + 1);
data[count++] = str;
}
private void ensureCapacity(int minCapacity)
{
int oldCapacity = datalength;
if (minCapacity > oldCapacity)
{
String oldData[] = data;
int newCapacity = oldCapacity 2;
data = new String[newCapacity];
Systemarraycopy(oldData, 0, data, 0, count);
}
}
public void remove(String str)
{
if(str == null) { return; // ignore null str }
for(int i = 0; i < count; i++)
{
// check for a match
if(data[i]equals(str))
{
Systemarraycopy(data,i+1,data,i,count-1); // copy data
// allow previously valid array element be gc'd
data[--count] = null;
return;
}
}
}
public final String getStringAt(int index)
{
if(index < 0) { return null; }
else if(index > count) { return null; // index is > # strings }
else { return data[index]; // index is good }
}
}
因此,代码:
Vector Strings=new Vector();
Stringsadd("One");
Stringsadd("Two");
String Second=(String)StringselementAt(1);
可以用如下的代码替换:
StringVector Strings=new StringVector();
Stringsadd("One");
Stringsadd("Two");
String Second=StringsgetStringAt(1);
这样就可以通过优化线程来提高JAVA程序的性能。用于测试的程序如下(TestCollectionjava):
import javautilVector;
public class TestCollection
{
public static void main(String args [])
{
TestCollection collect = new TestCollection();
if(argslength == 0)
{
Systemoutprintln("Usage: java TestCollection [ vector | stringvector ]");
Systemexit(1);
}
if(args[0]equals("vector"))
{
Vector store = new Vector();
long start = SystemcurrentTimeMillis();
for(int i = 0; i < 1000000; i++)
{
storeaddElement("string");
}
long finish = SystemcurrentTimeMillis();
Systemoutprintln((finish-start));
start = SystemcurrentTimeMillis();
for(int i = 0; i < 1000000; i++)
{
String result = (String)storeelementAt(i);
}
finish = SystemcurrentTimeMillis();
Systemoutprintln((finish-start));
}
else if(args[0]equals("stringvector"))
{
StringVector store = new StringVector();
long start = SystemcurrentTimeMillis();
for(int i = 0; i < 1000000; i++) { storeadd("string"); }
long finish = SystemcurrentTimeMillis();
Systemoutprintln((finish-start));
start = SystemcurrentTimeMillis();
for(int i = 0; i < 1000000; i++) {
String result = storegetStringAt(i);
}
finish = SystemcurrentTimeMillis();
Systemoutprintln((finish-start));
}
}
}
关于线程的 *** 作,要注意如下几个方面:
(1) 防止过多的同步
如上所示,不必要的同步常常会造成程序性能的下降。因此,如果程序是单线程,则一定不要使用同步。
(2) 同步方法而不要同步整个代码段
对某个方法或函数进行同步比对整个代码段进行同步的性能要好。
(3) 对每个对象使用多”锁”的机制来增大并发。
一般每个对象都只有一个”锁”,这就表明如果两个线程执行一个对象的两个不同的同步方法时,会发生”死锁”。即使这两个方法并不共享任何资源。为了避免这个问题,可以对一个对象实行”多锁”的机制。如下所示:
class foo
{
private static int var1;
private static Object lock1=new Object();
private static int var2;
private static Object lock2=new Object();
public static void increment1()
{
synchronized(lock1)
{
var1++;
}
}
public static void increment2()
{
synchronized(lock2)
{
var2++;
}
}
}
4.输入和输出(I/O)
输入和输出包括很多方面,但涉及最多的是对硬盘,网络或数据库的读写 *** 作。对于读写 *** 作,又分为有缓存和没有缓存的;对于数据库的 *** 作,又可以有多种类型的JDBC驱动器可以选择。但无论怎样,都会给程序的性能带来影响。因此,需要注意如下几点:
(1) 使用输入输出缓冲
尽可能的多使用缓存。但如果要经常对缓存进行刷新(flush),则建议不要使用缓存。
(2) 输出流(Output Stream)和Unicode字符串
当时用Output Stream和Unicode字符串时,Write类的开销比较大。因为它要实现Unicode到字节(byte)的转换因此,如果可能的话,在使用Write类之前就实现转换或用OutputStream类代替Writer类来使用。
(3) 当需序列化时使用transient
当序列化一个类或对象时,对于那些原子类型(atomic)或可以重建的原素要表识为transient类型。这样就不用每一次都进行序列化。如果这些序列化的对象要在网络上传输,这一小小的改变对性能会有很大的提高。
(4) 使用高速缓存(Cache)
对于那些经常要使用而又不大变化的对象或数据,可以把它存储在高速缓存中。这样就可以提高访问的速度。这一点对于从数据库中返回的结果集尤其重要。
(5) 使用速度快的JDBC驱动器(Driver)
JAVA对访问数据库提供了四种方法。这其中有两种是JDBC驱动器。一种是用JAVA外包的本地驱动器;另一种是完全的JAVA驱动器。具体要使用哪一种得根据JAVA布署的环境和应用程序本身来定。
5一些其他的经验和技巧
(1) 使用局部变量。
(2) 避免在同一个类中动过调用函数或方法(get或set)来设置或调用变量。
(3) 避免在循环中生成同一个变量或调用同一个函数(参数变量也一样)。
(4) 尽可能的使用static,final,private等关键字。
(5) 当复制大量数据时,使用Systemarraycopy()命令。
以上就是关于不是说在百度知道首页可以看到大数据库吗怎么没有,怎样才能看到全部的内容,包括:不是说在百度知道首页可以看到大数据库吗怎么没有,怎样才能看到、个人大数据怎么查、几大数据库的区别(三大数据库的区别与联系)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)