给出一个日常生活中的数据库系统的实例,阐述它的各组成部分是什么,是如何进行工作的。

给出一个日常生活中的数据库系统的实例,阐述它的各组成部分是什么,是如何进行工作的。,第1张

08奥运会售票系统

系统用户: 赛场志愿者;体育赛事观众

对于志愿者,要完成的主要功能如下:

1 管理对象:

a) 比赛场馆信息:

场馆名称、地理位置、座席信息(记录每个座席的编号和级别;级别设定分为贵宾座位、标准座位和低价座位)。

b) 赛事信息:

名称、赛事类型(如游泳,田径等)、赛事参加者(参赛队名称及简介)、比赛时间安排(场次、每场起止时间、临时变更记录)、比赛场馆、比赛结果(记录每个场次结果)、赛事票价(票价可按照座席级别来分级)、赛事售票开始和结束时间。

2 实现上述信息的添加、查询、删除和修改。

3 统计:

a) 按场馆统计赛事开展情况,统计内容见附件A:

b) 按时间统计赛事开展情况,统计内容见附件B;

c) 可将上述统计内容导出为Excel文件。

什么是数据库

数据库是一个以某种有组织的方式存储的数据集合,它是一个按数据结构来存储和管理数据的计算机软件系统。理解数据库的一种最简单的办法是将其想象为一个文件柜,这个文件柜只是一个存储数据的空间,而数据库就是这么一个空间。

数据库管理系统(DatabaseManagementSystem,DBMS)是用于创建、管理、和维护数据库时所使用的软件,用以管理数据库,一定程度上,用户都是在 *** 作DBMS,所以日常的数据库概念一般就是指DBMS。

常见的数据库软件DBMS有甲骨文的Oracle、微软的Aess、MongoDB等,还有我们教程要介绍的MySQL。

什么是MySQL?

MySQL是一种DBMS,而且是一种一个小型的开源的关系型数据库管理系统。2008年1月16日MySQLAB被Sun公司收购。而2009年,SUN又被Oracle收购。就这样如同一个轮回,MySQL成为了Oracle公司的另一个数据库项目。

MySQL它在世界范围内得到了广泛的安装和使用,应该是使用人数最多的数据库软件了,因为它有着这样的特性:

成本——MySQL是开源软件,可以免费使用和修改。

性能——MySQL性能很好处理速度很快。

简单——MySQL很容易安装和使用,对新手友好。

MySQL数据库软件也是使用最常用的数据库管理语言:结构化查询语言(SQL)进行数据库管理和 *** 作。

对于非计算机出身的我,大学只会hello word和跑马灯,期间过程确实非常曲折,分享下我的自学过程:

1、 自己在windows和linux上安装了mysql,自学linux的基础知识,学习mysql的最基础的知识,即怎么写sql,存储过程,表的设计等,从0到熟悉大概花了3个月 ,推荐《mysql入门很简单》。

2、系统地较为深入地学习mysql的sql优化,备份和恢复,参数优化,架构优化,硬件层面的优化,高可用方案,复制技术等等,这段时间你不一定能实际接触到这些,就像我当初那样,肯定没什么公司招一个小白。 我选择自己看书,推荐《高性能mysql》,里面所有的章节都需要看一遍,以现在的水平肯定看不懂,但需要知道大概怎么回事,为后续的找mysql初级dba的工作打一个铺垫,这个过程大概也需要3个月。

3、 纸上得来终觉浅,完成以上两步,我开始准备找一份mysql相关的工作,而不是天天用着excel表格做着select from table_sb这样的工作。 当然我这么猥琐的人肯定不会裸辞,该画的电路板也一样画,业余时间开始投初级mysql dba的工作,并且不间断地学习,网上各种找mysql面试的相关题目(实际上我当时完全没有任何实战经验),陆续收到一些面试,凭借之前自学的mysql知识,开始胡乱吹牛逼,先混进去再说。 你不做mysql实际相关的工作,永远也不知道自己之前认知的db知识有多幼稚。 友情提示一点,一般公司都没有专职dba的,所以面试的时候一定要自信,其实你学了这么多,虽然毫无实战经验,理论知识很大概率比面试你的人牛逼,所以各种吹,我就这样真正进入初级dba的圈子(由于这时对linux还处于cd ls的水平,所以之前也根本没做过运维),这个边工作边找工作的过程又持续了2个月。

4、真正进入互联网,接触生产环境后,这是我进步最大的时候。 第一步需要将之前所学真正地应用起来,并且应用的过程中,再回头看之前的书籍,这时候需要真正去理解,而不是似是而非,一知半解。 这时再推荐《高性能mysql 第三版》,全本再看一遍,这时需要全部看懂,另外还有《mysql技术内幕:innodb存储引擎》等等。 总之这段时间就需要开始关注mysql一些细节了,比如db故障处理,高可用,负载均衡等等的具体实现了。 另外,linux的知识同步也要深入去学习,至少会写shell脚本,常见的linux知识等,我在这花了1年多;

5、 dba的工作一般是非常轻闲的,毕竟不是大公司,技术能力有限,该学的也学得差不多了,接触不到海量数据,高并发等比较锻炼人的场合,于是我又准备跳了。 于是来了公有云,现在每天运维万多个db实例,平均每天处理5+个紧急db故障,几乎mysql会遇到的问题,感觉都遇到了,能感觉到技术实力和经验也在每天都在积累,在进步。 但是感觉还是欠缺了很多,下一步就看你选择了,是再去研究源代码,底层原理的东西多点,还是数据库运维和应用多一点,就比如业界姜承尧,何登成与叶金荣的区别。 由于我的历史原因,对c++等几乎不懂,平时也用不到,所以看代码等事实际太累,于是我再去学mongodb,接了公司mongodb运维的活,算是在广度上的一个扩展,万一哪天mysql不行了呢

6、 总之,对于db小白来说,最重要的一点就是,学习的过程不能断。 PS 上面的方法比较野路子,适合没什么基础的童鞋,如果本来就是DBA,比如从oracle转到mysql,那么建议直接看mysql官方文档,而官方文档是db达到一定水平后必看,出问题时必查的权威文档。

求会话等待的file_id/block_id

col event format a col p text format a col p text format a col p text format a select sid event p text p p text p p text p from v$session_waitwhere event not like %SQL% and event not like %rdbms% and event not like %mon% order by event;select name wait_time from v$latch l where exists (select from (select sid event p text p p text p p text p from v$session_waitwhere event not like %SQL% and event not like %rdbms% and event not like %mon% ) x where x p = l latch#);

求会话等待的对象

col owner format a col segment_name format a col segment_type format a select owner segment_name segment_typefrom dba_extentswhere file_id = &file_id and &block_id beeen block_id and block_id + blocks ;

求buffer cache中的块信息

select o OBJECT_TYPE substr(o OBJECT_NAME ) objname b objd b status count(b objd)from v$bh b dba_objects owhere b objd = o data_object_id and o owner = & group by o object_type o object_name b objd b status ;

求日志文件的空间使用

select le leseq current_log_sequence# cp cpodr_bno/le lesiz percentage_fullfrom x$kcccp cp x$kccle lewhere le leseq =cp cpodr_seq;

求等待中的对象

select /+rule / s sid s username w event o owner o segment_name o segment_type o partition_name w seconds_in_wait seconds w statefrom v$session_wait w v$session s dba_extents owhere w event in (select name from v$event_name where parameter = file# and parameter = block# and name not like control% )and o owner <> sys and w sid = s sid and w p = o file_id and w p >= o block_id and w p < o block_id + o blocks

求当前事务的重做尺寸

select valuefrom v$mystat v$statnamewhere v$mystat statistic# = v$statname statistic# and v$statname name = redo size ;

唤醒 on去清除临时段

column pid new_value Smonset termout offselect p pid from sys v_$bgprocess b sys v_$process p where b name = SMON and p addr = b paddr/set termout onoradebug wakeup &Smonundefine Smon

求回退率

select b value/(a value + b value) a value b value from v$sysstat a v$sysstat bwhere a statistic#= and b statistic#= ;

求DISK READ较多的SQL

select st sql_text from v$sql s v$sqltext stwhere s address=st address and s hash_value=st hash_value and s disk_reads > ;

求DISK SORT严重的SQL

select sess username sql sql_text sort blocksfrom v$session sess v$sqlarea sql v$sort_usage sort where sess serial# = sort session_numand sort sqladdr = sql addressand sort sqlhash = sql hash_value and sort blocks > ;

求对象的创建代码

column column_name format a column sql_text format a select dbms_metadata get_ddl( TABLE & ) from dual;select dbms_metadata get_ddl( INDEX & ) from dual;

求表的索引

set linesize select a index_name a column_name b status b index_typefrom user_ind_columns a user_indexes bwhere a index_name=b index_name and a table_name= & ;

求索引中行数较多的

select index_name blevel num_rows CLUSTERING_FACTOR status from user_indexes where num_rows > and blevel > select table_name index_name blevel num_rows CLUSTERING_FACTOR status from user_indexes where status <> VALID

求当前会话的SID SERIAL#

select sid serial# from v$session where audsid = SYS_CONTEXT( USERENV SESSIONID );

求表空间的未用空间

col mbytes format select tablespace_name sum(bytes)/ / mbytes from dba_free_space group by tablespace_name;

求表中定义的触发器

select table_name index_type index_name uniqueness from user_indexes where table_name= & ;select trigger_name from user_triggers where table_name= & ;

求未定义索引的表

select table_name from user_tables where table_name not in (select table_name from user_ind_columns);

执行常用的过程

exec print_sql( select count() from tab );exec show_space ( table_name );

求free memory

select from v$sgastat where name= free memory ;select a name sum(b value) from v$statname a v$sesstat b where a statistic# = b statistic# group by a name;

查看一下谁在使用那个可以得回滚段 或者查看一下某个可以得用户在使用回滚段 找出领回滚段不断增长的事务 再看看如何处理它 是否可以将它mit 再不行就看能否kill它 查看当前正在使用的回滚段的用户信息和回滚段信息:

set linesize SELECT r name ROLLBACK SEGMENT NAME l sid ORACLE PID p spid SYSTEM PID s username ORACLE USERNAME FROM v$lock l v$process p v$rollname r v$session sWHERE l sid = p pid(+) AND s sid=l sid AND TRUNC(l id (+)/ ) = r usn AND l type(+) = TX AND l lmode(+) = ORDER BY r name;

lishixinzhi/Article/program/SQL/201311/16150

数据库方面的工作分为两类:

一类是利用SQL做开发,这个是对数据库的应用。一般来说,都是编程人员,利用接口比如JDBC调用数据库的SQL来做查询。这种工作重点还是在编程上。因为涉及到的数据库方面的知识并不算多。说白了,就是和“数据库编码相关的程序员”。

另一类是数据库管理人员,主要负责数据库的备份,日常维护,代码优化等等。相对来说对数据库方面的知识要求较高,对技术要求也较高。也就是所谓的DBA。

大二、大三时候,其实多数人对自己将来的规划都不明确。都认为自己将来会从事很多编程的工作。因为所学的科目大多和编程有关系。可实际上最终真正从事编程的人最多只是55开。所以你不必过早的把自己定位成一个编程人员。

程序开发是很辛苦的,而且很伤身体,做不了太久。我建议你多拓宽自己的思维,将来有很多其他的机会,比如BA,比如架构师,比如QA等等。

至于你说的,你们的课程和数据库有关。那是必然的,任何计算机相关专业都必须学到数据库。但“面向对象程序设计”和数据库的关系,就不是很大了。

你要抓住计算机相关专业的几门核心课程:数据结构, *** 作系统,组成原理等等。这些东西将来才是真正帮助你的东西。至于如何编程,考什么证书,这些都是次要的。我坦白的跟你讲,这些东西你工作之后有大把的时间去学。而基础那时候就难补了。所以你将来能走多远,很大程度上是看你现在的基础怎么样。那些“看起来没什么用”的课,将来会对你有很大的帮助。

-------------------------------

综上,你过早的把自己定位在一个数据库开发人员,这本就是错误的,打好基础才是重点。计算机不只是编程,而编程未必像你想的那么有趣。

oracle数据库也好,db2数据库也罢,都只不过是别人提供的一种软件而已。你只要掌握了数据库基本的增查删改语句,对于将来数据库的开发就基本够用了。至于优化什么的,是要到具体的工作中去学。更何况,你将来即使是和数据库相关的开发,也是主要集中在编程上而非数据库上。

以上就是关于给出一个日常生活中的数据库系统的实例,阐述它的各组成部分是什么,是如何进行工作的。全部的内容,包括:给出一个日常生活中的数据库系统的实例,阐述它的各组成部分是什么,是如何进行工作的。、MySQL数据库的简介(数据库的介绍)、零基础如何自学使用MySQL数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9734445.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存