数据库程序员面试分类真题25.docx

上传人:夺命阿水 文档编号:1416079 上传时间:2024-06-15 格式:DOCX 页数:32 大小:158.25KB
返回 下载 相关 举报
数据库程序员面试分类真题25.docx_第1页
第1页 / 共32页
数据库程序员面试分类真题25.docx_第2页
第2页 / 共32页
数据库程序员面试分类真题25.docx_第3页
第3页 / 共32页
数据库程序员面试分类真题25.docx_第4页
第4页 / 共32页
数据库程序员面试分类真题25.docx_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《数据库程序员面试分类真题25.docx》由会员分享,可在线阅读,更多相关《数据库程序员面试分类真题25.docx(32页珍藏版)》请在课桌文档上搜索。

1、倚答题1.在MySQ1.中,如何杳看表的详细信息,例如,存储引擎、行数、更新时间等?正确答案:可以使用SHoWTAB1.ESTATUS获取表的详细信息,语法为(江南博哥)SHOWTAB1.ESTATUSFROMINdb_name1.IKE,pattern*WHEREexpr例如:(l)showtablestatusfromdb_name查询db_name数据库里所有表的信息(2)showtablestatusfromdbname1ike,IhruscG;查询db_name里Ihruse表的信息(3)showtablestatusfromdb11amc1ike,uc%,查询db_namc数据库里

2、表名以UC开头的表的信息卜面的SQ1.语句查询了nysql数据库中的user表的详细信息:数据库程序员面试分类真题25列名NameEngineVersion解释表名表的存储引擎,在MySQ1.4.1.2之前,该列的名字为TyPe表的.frm文件的版本号行存储格式(FiXed,Dynamic,Compressed.Redundant*Compact)0对于MyISAM引擎,可以是DynaImc、RowformatFixed或Compressed0动态行的行长度可变,例如Varchar或Bhb类型字段。固定行是指行长度不变,例如CharfIJInteger类型字段行的数目。对于非事务性表,这个值是

3、精确的,对于事务性引擎,这个值通常是估算的。例如MyISAM,存储精确的数目。对于其他存储引擎,比如InnoDB,本值是一Rows个大约的数,与实际值相差可达4050在这些情况卜.,使用SE1.EcTCofNT(*)来获得准确的数目。对于在INFORMATIO1.SCHEMA数据库中的表,Rows值为NU1.1./vg_row_length平均每行包括的字节数6其中,每列的含义见卜表。Datalength表数据的大小(和存储引擎有关)MaXdataIength表nJ以容纳的最大数据量(和存储引擎有关)IndexlengthData_freeAutoincrementCreatetimeUpda

4、tetimeChCCk_timcColIationChecksumCreate_optionsComment索引的大小(和存储引擎有关)对于MyISAM引擎,标识已分配,但现在未使用的空间,并且包含了已被删除行的空间卜.一个AUlOincrement的值表的创建时间表的最近更新时间使用checktable或myisamchk工具检查表的最近时间表的默认字符集和字符排序规则如果启用,则对整个表的内容计算时的校验和指表创建时的其他所有选项包含了其他额外信息,对于MyISAM引擎,包含了注释。对于InnoDB引擎,则保存着InnoDB表空间的剩余空间信息。如果是一个视图,那么注释里面包含了VIEW字

5、样也可以使用informationSChema.tables表来查询,如下:SE1.ECTtablename,Engine,Version,Rowformat,tablerows,Avgrowlength,Datalength,Maxdatalength,Indexlength,Datafree,Autoincrement,Create_time,UPdate_time,Check_time,table_collation,Checksum,Create_options,table_commentFROMinformation_schema.tablesWHERETable-Sehema=my

6、sqandtable_name=,userG;2. MySQ1.的企业版和社区版的区别有哪些?正确答案:用户通常可以到官方网站下载最新版本的MySQ1.数据库。按照用户群分类,MySQ1.数据库目前分为社区版(ConImUnitySCrVer)和企业版(Enterprise),它们最重要的区别在于:社区版是自由下载而且完全免费的,但是官方不提供任何技术支持,适用于大多数普通用户:企业版是收费的,不能在线卜载,但是,它提供了更多的功能和更完备的技术支持,更适合于对数据库的功能和可竟性要求较高的企业客户。考点维护3. 在1.inux下安装MySQ1.有哪几种方式?它们的优缺点各有哪些?正确答案:在

7、windows下可以使用noinstll包和图形化包来安装,在1.inux下可以使用如下3种方式来安装:RPM:RedhMPachgeManiac)渴刽(BinayPjchge)螭(SourcePxkae)侬减聃,适含腑杼习期蛾*枭可触耦msE况谢的:一台册博可以减纱MySQ1.在实斥安装的辰作系维遨诃根据需要定搬mE出系蚀缆均-翎务轲以嫌多个M)SQ1.触般鞋F幽户耶鼓务品安耨皆稹而飘邮不H&台鼠务甥港安装个M)SQl已搬过艇,险不哪鞫好:不限法定碑样教嫁胡奴然驮相咻好糊AsMk静IM帆雌三,ffi:mysqldR8,VTlibmysqI:H吉文件,fl:蟒usrStarcdxpidages

8、:ZRreludemjsj-VERSK)N-0St3f.pCmy即ln-sMBQ1.-VlRSloNa的刈或用m命令jaaip喇-VERSION.Utgz:凶EIW过程WhMySQ1.-Savff4M)5Q1.-3)折蛤亿WSQ1.5.7之后用肝邱i一向蚓KTipblmySqlinstilldbCdnMqI-VERSION.oaiure-RrfiXsterlocahn网InukeA11nkeinstaD4)启动诬睥林触月2InySqitsIfe&tpasw(Hmetcmysqlf-usrlocalmysqletcmy.Cnf.ny.Cnf;在Windows卜的次序为C:WlNDOWSmy.in

9、i-C:WINDOWSf-C:my.ini-C:f-%MySQ1.安装目录(my.ini-%MySQ1.安装目录(fo如果这几个配置文件中都有同一个参数,那么MySQ1.数据库会以读取到的最后一个配置文件中的参数为准。在1.inUX环境下,配置文件般为etcf.在数据库启动的时候可以加上从指定参数文件进行启动,如下:mysqld_safe-defaults-file=etcf&MySQ1.的变量可以分为系统变量和状态变量。MySQ1.没有类似于Oracle的隐含参数,也不需要隐含参数来设置。下面分别讲解。1 .系统变量系统变量用于配置MySQ1.服务器的运行环境。系统变量按其作用域的不同可以分

10、为两种:全局(G1.OBA1.)级,对整个MySQ1.服务器有效;会话(SESSION或1.oCA1.)级,只影响当前会话。有些变量同时拥有以上两个级别,MySQ1.将在建立连接时用全局级变量初始化会活级变量,但一旦连接建立之后,全局级变量的改变不会影响到会话级变量。nJ以用ShOWVariabIeS查看系统变量的值,如下:mysqlshowvariableslikelog%;mysqlshowvariab1eswhereVariablejame1ikelog%andVaIUe=ON;注意:ShOWVariableS优先显示会话级变量的值,若这个值不存在,则显示全局级变量的值,当然也可以加上G

11、1.OBA1.或SESSION关键字进行区别:showglobalvariables;showsession/localvariables:在写一些存储过程时,可能需要引用系统变量的值,可以使用如下方法:购G1.oBA1.var_name鲍SESSlON.var_name的1.oCA1.var_name如果在变量名前没有级别限定符,那么将优先显示会话级的值。另外一种查看系统变量值的方法是直接查询表。对于MySQ1.5.6可以从INFORMATION_SCHEMA.G1.OBA1.VARIAB1.ES和INFORMATIONSCHEMA.SESSIONVARIABI.ES表获得:对于MySQ1.

12、5.7可以从performanceschema,globalvariables和performanceschema,sessionVariabIeS表中查询。需要注意的是,若要查询INFORMTION_SCHEMA.G1.OBA1.VARIAB1.ES或INFORMTION-SCHIMA.SESSloN.VARIAB1.ES表,则需要设置参数ShoW_ComPatibility_56的值九0N,否则会报错:ERROR3167(HYOOO):The,INFORMATION_SCHEMA.G1.OBA1.-STATUS,featureisdisabled;seethedocumentationfo

13、r,showcompatibility_56,在MySQ1.服务器启动时,可以通过以示两种方法设置系统变量的值:1)命令行参数,例如,mysqld-max_connections=20002)选项文件(my.cd)。在MySQ1.服务彝启动后,如果需要修改系统变量的值,那么可以通过SET语句:SETG1.OBA1.varname=value;SET鲍G1.OBA1.varname=value;SETSESSIONVarname=Value;SETQQSESSION.var_name=value;如果在变量名前没看级别限定符,那么表示修改会话级变量。MySQ1.的系统变量也可以分为动态(Dyna

14、mic)系统变量和静态(Static)系统变量。动态系统变量意味着可以在MySQ1.实例运行中进行更改:静态系统变量说明在整个实例生命周期内都不得进行更改,就好像是只读(ReadOnly)的。注意:和启动时不一样的是,在运行时设置的变量不允许使用后缀字母K、7等,但可以用表达式来达到相同的效果,如:SETG1.OBA1.readbuffersize=2*1024*10242 .状态变量状态变量用于监控MySQ1.服务器的运行状态,可以用ShOwSIareS查看。状态变量和系统变量类似,也分为全局级和会话级,ShoWSIatUS也支持IikC匹配杳询,不同之处在于,状态变量只能由MySQ1.服务

15、器本身设置和修改,对于用户来说是只读的,不可以通过SET语句设置和修改它们。另外,和系统变量类似,也可以通过表的方式来查询状态变量的值,MySQ1.5.6查询INFORMAT10N_SCHEMA.G1.OBA1.STATUS和INF0RMT10N_SCHEMA.SESSI0N_STATUS:MySQ1.5.7查询PerfOrmanCe_schema.session_status和performance_schema.SeSSiOn_status。考点参数5. MySQ1.查看当前使用的配置文件my.c11f的方法有哪些?正确答案:MySQ1.实例在启动时,会先读取配置参数文件f。f一般会放在M

16、ySQ1.的安装目录中,用户也可以放在其他目录加载。在安装MySQ1.后,系统中会有多个f文件,有些是用于测试的。使用“loCf”或find-naf”命令nJ以列出所有的f文件。有时候,DBA会发现虽然尝试修改了配置文件的一些变量,但是并没有生效,这其实是因为修改的文件并非MySQ1.服务器读取的配置文件。在1.inUX环境中,MySQ1.服务器读取的配置文件及路径默认为etcmy.enfetcmysqlfusretcmy.enf/f如果不清楚MySQ1.当前使用的配置文件路径,那么可以按照如下步骤来查看:(1)杳看是否使用了指定目录的my.Cnf文件在启动MySQ1.后,可以通过查看MySQ

17、1.的进程,看是否有设置使用指定目录的f文件,如果有则表示MySQ1.启动时加载了这个配置文件。命令:ps-efIgrepmysqlgrepf如果上面的命令没有输出,那么表示没有设置使用指定目录的f,若有输出则表示使用的是输出中的文件O(2)查看MySQ1.默认读取f的目录如果没有设置使用指定目录的f,MySQ1.启动时会读取安装目录根目录及默认目录下的f文件。命令:mysql-helpgrepf或mysqld-verbose-helpgrep-A1Defaultoptions*一般情况下,“etcf、etcmysqlf4usrlocaletcf、/f,就是MySQ1.默认会搜寻f的目录,顺序

18、排前的优先。(3)启动时没有使用配置文件如果没有设置使用指定目录my.Cnf文件及默认读取目录没有f文件,那么表示MySQ1.启动时并没有加载配置文件,而是使用默认配置。若需要修改配置,则可以在MySQ1.默认读取的目录中,创建一个f文件(例如,etcf),把需要修改的配置内容写入,重启MySQ1.后即可生效。如果是WindoWS安装版,那么找到相关的WindOWS服务,会看到配置了一个文件地址,如下图所示。若此处没有看到配置文件地址,则使用的是默认目录下的myCnf文件。考点参数6. MySQ1.有哪几类物理文件?正确答案:MySQ1.数据库的文件包括:1)参数文件:fo2) 志文件:包括错

19、误口志、查询口志、慢查询口志和二进制口志。3)MySQ1.表文件:用来存放MySQ1.表结构的文件,一般以.frm为后缀。4)Socket文件:当用Unix域套接字方式进行连接时需要的文件。5)Pid文件:MySQ1.实例的进程ID文件。6)存储引擎文件:每个存储引擎都有自己的文件夹来保存各种数据,这些存储引擎真正存储了数据和索引等数据。考点文件7. 什么是VySQ1.的套接字文件?正确答案:MySQ1.有两种连接方式,常用的是TCP/IP方式,如下:mysql-hl92.168.59.159-uroot-plhr还有一种是套接字方式。UniX系统下本地连接MySQ1.可以采用Unix套接字方

20、式,这种方式需要一个套接字(SoCket)文件。套接字文件就是当用套接字方式进行连接时需要的文件。套接字方式比用TCP/IP的方式更快,更安全,但只适用于MySQ1.和客户端在同一台PC上。套接字文件可由参数socket控制,般在tmp目录下,名为mysql.sock,也可以放在其他目录下,如下:叫刈swVadIbkSIie,Mxkef:YariabkjwoeValuesocketiarliblzvsql57,Djsq1.scck用套接字连接MySQ1.:mysql-plhr-Svarlibmysql57mysql.sock考点文件8. 什么是MySQ1.的Pid文件?正确答案:Pid文件是M

21、ySQ1.实例的进程ID文件。当MySQ1.实例启动时,会将自己的进程ID写入一个文件中,该文件即为Pid文件。该文件可由参数Pi1.file控制,默认路径位于数据库目录下,文件名为主机名.pid,如下:即ql$hoWVambIeS1.kcYidJIVariab!e.naeValo?pid.fi!e:lvalib,y157)sqi57l9daulJfflDfi.pid考点文件9. MySQ1.支持事务吗?正确答案:在缺省模式下,MySQ1.是AUToCOMMIT模式的,所有的数据库更新操作都会即时提交。这就表示除非显式地开始一个事务,否则每个杳询都被当作一个单独的事务自动执行。但是,如果MyS

22、Q1.表类型是使用InnODBTableS(或其他支持事务的存储引擎),那么MySQ1.就可以使用事务处理,使用SETAUTOeoVMIT=O就可以使MySQ1.运行在非AUTOCOMMIT模式下。在非AUToCoMMIT模式可必须使用CoMMIT来提交更改,或者使用RO1.1.BACK来回滚更改。需要注意的是,在MySQ1.5.5以前,默认的存储引擎是MylSA2M(从VySQ1.5.5开始,默认存储引擎是InnODB),而VylSAM存储引擎不支持事务处理,所以改变AUTOCoMMIT的值对数据库没有什么作用,但不会报错。所以,若要使用事务处理,则一定要确定所操作的表是支持事务处理的,lI

23、nnoDB0如果不知道表的存储引擎,那么可以通过查看建表语句来确定表的存储引擎。考点存储引擎10. InnoDB存储引擎支持哪些事务类型?正确答案:对于InnODB存储引擎来说,其支持扁平事务、带有保存点的扁平事务、链事务和分布式事务。对于嵌套事务,其原生不支持。因此对有并发事务需求的用户来说,MySQ1.数据库或InnODB存储引擎就显得无能为力,然而用户仍可以通过带保存点的事务来模拟串行的嵌套事务。考点存储引擎11. InnoDB存储引擎支持XA事务吗?正确答案:XA事务即分布式事务,目前在VySQ1.的存储引擎中,只有InnoDB存储引擎才支持XA事务。需要注意的是,在使用分布式事务时,

24、Inn。DB存储引擎的隔离级别必须设置为SERlA1.IZAB1.E。通过参数innodb_support_xa可以杳看是否启用了XA事务的支持(钛认为ON,表示启用):mysqlshowViriabieslike/nnodb_SPpCTUa%;YariabIeJW:Valueinnfo.support.xa!(K考点存储引擎12. MySQ1.中的XA事务分为哪几类?正确答案:MySQ1.从5.0.3版本开始支持XA事务,即分布式事务。在MySQ1.中,XA事务有两种,内部XA事务和外部XA事务,下面分别介绍内部XA事务MySQ1.本身的插件式架构导致在其内部需要使用XA事务,此时MySQ1

25、.既是协调者,也是参与者。内部XA事务发生在存储引擎与插件之间,或者存储引擎与存储引擎之间。例如,不同的存储引擎之间是完全独立的,因此当一个事务涉及两个不同的存储引擎时,就必须使用内部XA事务。由于只在单机上工作,所以被称为内部XA。最为常见的内部x事务存在于二进制志(BinlOg)和InnoDB存储引擎之间。由于复制的需要,目前绝大多数的数据库都开启了Binlog功能。在事务提交时,先写二进制日志,再写InnODB存储引擎的重做Fl志。对上述两个操作的要求也是原了的,即:进制日志和重做H志必须同时写入。若:进制日志先写了,而在写入InnoDB存储引擎时发生了宕机,那么SlaVC可能会接收到M

26、aSler传过去的二进制日志并执行,最终导致了主从不一致的情况。为了解决这个问题,MySQ1.数据库在BinlOg与InnoDB存储引擎之间采用XA事务。当事务提交时,InnoDB存储引擎会先做一个PREPARE操作,将事务的Xid写入,接着进行BinIog的写入。如果在Binlog存储引擎提交前,MYSQ1.数据库宕机了,那么MySQ1.数据库在重启后会先检查准备的UKID事务是否已经提交,若没有,则布存储引擎层再进行一次提交操作。外部XA事务外部XA事务就是般谈论的分布式事务。MySQ1.支持XASTRTENDPKEBARECOMM1T这些SQ1.语句,通过使用这些命令可以完成分布式事务的

27、状态转移。VySQ1.在执行分布式事务(外部XA)的时候,MySQ1.服务器相当于XA事务资源管理器,与MySQ1.链接的客户端相当于事务管理器。内部:XA事务用于同一实例下跨多引擎事务,而外部XA事务用于跨多MySQ1.实例的分布式事务,需要应用层作为协调者。应用层负责决定提交还是回滚。MySQ1.数据库外部XA事务可以用在分布式数据库代理层,实现对VySQ1.数据库的分布式事务支持,例如开源的代理工具:网易的DDB、淘宝的TDD1.等。考点存储引擎13. 什么是MySQ1.的存储引擎?正确答案:MySQ1.中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种都使用不同的存储

28、机制、索引技巧、锁定水平并且最终提供广泛的不同的功能。通过选择不同的技术,能够获得额外的速度或者功能,从而改善应用的整体功能。例如,研究大量的临时数据,也许需要使用内存存储引擎。内存存储引擎能够在内存中存储所有的表格数据。这些不同的技术以及配套的相关功能在MySQ1.中被称作存储引擎(StorageEngines,也称作表类型)。MySQ1.默认配置了许多不同的存储引擎,可以预先设置或者在MySQ1.服务器中启用。考点存储引擎14. MySQI.有几种存储引擎(表类型)?各自有什么区别?正确答案:MySQ1.官方有多种存储引擎:MylSAM、InnoDB.MERGE、MEMORY(HEAP).

29、BDB(BerkeleyDB).EXAMP1.E,FEDERATED.ARCHIVE.CSV、B1.ACKHO1.E第三方存储引擎中比较有名的有TOkUDB、Infobright.InnfiniDB.XtraDB(InnoDB增强版本)。其中,最常见的两种存储引擎是MylSAM和InnoDBMylSAM是MySQ1.关系型数据库管理系统的默认存储引擎(MySQ1.5.5以前)。这种MySQ1.表存储结构从旧ISAM代码扩展出许多有用的功能。从MySQ1.5.5开始,InnoDB引擎由于其对事务参照完整性,以及更高的并发性等优点开始逐步地取代MyISAM,作为MySQ1.数据库的钛认存储引擎。下

30、面逐一介绍各种存储引擎。1.MyISAMMyISAM存储引擎管理非事务表,提供高速存储和检索,以及全文搜索能力。该引擎插入数据快,空间和内存使用比较低。(D存储组成每个MyISAM在磁盘上存储成三个文件。每一个文件的名字就是表的名字,文件名都和表名相同,扩展名指出了文件类型。这里特别要注意的是,MylSAM不缓存数据文件,只缓存索引文件。1)表定义的扩展名为.frm(frame,存储表定义)。2)数据文件的扩展名为.MYDNYData,存储数据)。3)索引文件的扩展名是.MYI(MYIndex,存储索引)。数据文件和索引文件可以放置在不同的目录,平均分布I/O,获得更快的速度,而且其索引是压缩

31、的,能加载更多索引,这样内存使用率就对应提高了不少,压缩后的索引也能节约一些磁盘空间。(2)特点D不支持事务,不支持外键约束,但支持全文索引,这可以极大地优化1.IKE查询的效率。2)表级锁定(更新时锁定整个表):其锁定机制是表级索引,这虽然可以让锁定的实现成本很小,但是也同时大大降低了其并发性能。MylSAM不支持行级锁,只支持并发插入的表锁,主要用于高负载的查询。3)读写互相阻塞:不仅会在写入的时候阻塞读取,MyISAM还会在读取的时候阻塞写入,但读本功并不会阻塞另外的读。4)不缓存数据,只缓存索引:MyISAM可以通过key_buffer缓存,以大大提高访问性能,减少磁盘I/O,但是这个

32、缓存区只会缓存索引,而不会缓存数据。root0mysqlJttgrepkey_fkey_buffer_size=16M5)读取速度*快,占用资源相对少。6)MyISAM引擎是MySQ1.5.5之前版本缺省的存储引擎。7)并发量较小,不适合大量UPDATE。(3)适用场景如果表主要用于插入新记录和读出新记录,那么选择MyISAM存储引擎能实现处理的高效率。如果应用的完整性和并发性要求很低,那么也可以选择MylSAM存储引擎。它是在谭eb、数据仓储和其他应用环境下最常使用的存储引擎之一。具体来说,适用于以下场景:D不需要事务支持的业务,一般为读数据比较多的网站应用。2)并发相对较低的业务(纯读纯写

33、高并发也可以)3)数据修改相对较少的业务。4)以读为主的业务,例如,Ww、B1.OG、图片信息数据库、用户数据库、商品数据库等业务。5)对数据一致性要求不是非常高的业务。6)中小型网站的部分业务。小结:单一对数据库的操作都可以使用MyISAM,所谓单一就是尽量纯读,或纯写(INSERT,UPDATE,DE1.ETE)等。生产建议:没有特别需求,一律用InnoDBoMyISAV引擎调优精要1)尽量索引(缓存机制).2)调整读写优先级,根据实际需要确保重要操作更优先。3)启用延迟插入改善大批量写入性能(降低写入频率,尽可能多条数据-次性写入)。4)尽量顺序操作让INSERT数据都写入尾部,减少阻塞

34、。5)分解大的操作,降低单个操作的阻塞时间。6)降低并发数,某些高并发场景通过应用进行排队机制。7)对于相对静态的数据,充分利用QusyCaChe可以极大地提高访问效率。Crootgmysql3307#grepqueryfquery_cache_size=2Mquery_cache_Iimit=IMquery_cache_min_res_unit=2k这几个参数而是MySQ1.自身缓存设置。8)MyISAM的COUNT只有在全表扫描的时候特别高效,带有其他条件的COUNT都需要进行实际的数据访问。9)把主从同步的主库使用InnoDB,从库使用VylSAM引擎。2.InnoDBInnoDB用于事

35、务处理应用程序,主要面向O1.TP方面的应用。该引擎由Inn。DB公司开发,其特点是行锁设置,并支持类似于OraCle的非锁定读,即默认情况下读不产生锁。InnoDB将数据放在一个逻辑表空间中。InnoDB通过多版本并发控制来获得高并发性,实现了ANSI标准的4种隔离级别,默认为Repeatable,使用一种被称为next-keylocking的策略避免幻读。对于表中数据的存储,InnoDB采用类似OraCle索引组织表CIUStered的方式进行存储。如果对事务的完整性要求比较高,要求实现并发控制,那么选择InnODB引擎有很大的优势。需要频繁地进行更新,删除操作的数据库,也可以选择Inno

36、DB存储引擎。因为InnODB存储引擎提供了具有提交(COMMrT)、回滚(RO1.1.BACK)和崩溃恢复能力的事务安全。InnoDB类型的表只有ibd文件,分为数据区和索引区,有较好的读写并发能力。物理文件有R志文件、数据文件和索引文件。其中,索引文件和数据文件是放在一个目录下,可以设置共享文件、独享文件两种格式。(1)特点1)支持事务:包括AClD事务支持,支持4个事务隔离级别,支持多版本读。2)行级锁定(更新时一般是锁定当前行):通过索引实现,全表扫描仍然会是表锁,注意间隙锁的影响。3)支持崩溃修复能力和MVCCo4)读写阻塞与事务隔离级别相关。5)具有非常高效的缓存特性:能缓存索引,

37、也能缓存数据。6)整个表和主键以C1.USTER方式存储,组成一棵平衡树。7)所有SECoNDARYINDEX都会保存主键信息。8)支持分区、表空间,类似OraCIe数据库。9)支持外键约束(FOreignKey),外键所在的表称为子表,而所依赖的表称为父表。10)InnoDB支持自增长列(AUT(INCREMENT),自增长列的值不能为空。II)InnoDB是索引和数据紧密痴绑的,没有使用压缩,从而会造成InnODB比MylSAM体积庞大得多。(2)优点支持事务,用于事务处理应用程序,具有众多特性,包括ACID事务支持,支持外键,同时支持崩渍修复能力和并发控制。并发量较大,适合大量UPDAT

38、E.(3)缺点对比MyISAM的存储引擎,InnoDB写的处理效率差些,并且会占用更多的磁盘空间以保留数据和索引。相比MyISAM引擎,InnoDB引擎更消耗资源,速度没有MyISAM引擎快。(4)适用场景如果对事务的完整性要求比较高,要求实现并发控制,那么选择Inn。DB引擎有很大的优势。需要频繁地进行更新,删除操作的数据库,也可以选择InnODB存储引擎。具体分类如下:1)需要事务支持(具有较好的事务特性)02)行级锁定对高并发有很好的适应能力,但需要确保查询是通过索引完成。3)数据更新较为频繁的场生,例如,BBS(BUlletinBoardSystem,电子公告牌系统)、SNS(Soci

39、alNetworkSite,社交网)等。4)数据一致性要求较高的业务。例如,充值、银行转账等。5)硬件设备内存较大,可以利用InnoDB较好的缓存能力来提高内存利用率,尽可能减少磁盘I/O。3307)grep-iwm)nfrl_siK=4Minno,buflJX)Otsize=32Minnodb_(faia_filcjiai=ibdaal:128M:JUtoattMinnftIikkthrds=4加it据文件:rootmysql3307#11data/ibdatal-rwrw1mysqlnysql134217728May1508:31data/ibdatal6)相比MylSAM引擎,InnoD

40、B引擎更消耗资源,速度没有MySAM引擎快。InnoDB引擎调优精要1)主键尽可能小,避免给SECOM)ARYlNDEX带来过大的空间负担。2)避免全表扫描,因为会使用表锁。3)尽可能缓存所有的索引和数据,提高响应速度,减少磁盘1/0消耗。4)在执行大量插入操作的时候,尽量自己控制事务而不要使用utocommit自动提交。有开关可以控制提交方式。5)合理设置innodb_f1ush_log_at_trx_commit参数值,不要过度追求安全性。06)避免主键更新,因为这会带来大量的数据移动。3.memorycheap)MEMoRY存储引擎(之前称为HEAP)提供“内存中”的表。如果需要很快的读

41、写速度,对数据的安全性要求较低,那么可选择MEMORY存储引擎。MEMORY存储引擎对表大小有要求,不能建太大的表。所以,这类数据库只适用相对较小的数据库表。如果mysqld进程发生异常,那么数据库就会重启或崩溃,数据就会丢失,因此,MEMORY存储引擎中的表的生命周期很短,一般只使用一次,非常适合存储临时数据。(1)特点1)MEMORY存储引擎将所有数据保存在内存(RAM)中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问速度。2)每个基于MEMORY存储引擎的表实际对应一个磁盘文件,该文件的文件名和表名是相同的,类型为.rm。该文件只存储表的结构,而其数据文件都是存储在内存中,

42、这样有利于对数据的快速处理,提高整个表的处理能力。3 )MEMORY存储引擎默认使用哈希(HASH)索引,其速度比使用B-Tree型要快,但安全性不高。如果希望使用B-Tree型,那么在创建的时候可以引用。(2)适用场景如果需要很快的读写速度,那么在需要快速查找引用和其他类似数据的环境下,对数据的安全性要求较低,可选择MEvoRY存储引擎。优点将所有数据保存在内存(RAM)中,默认使用HASH索引,数据的处理速度快。(4)缺点不支凉加务,安全性不前MEMORY存储引擎对表大小有要求,不能建太大的表。4 .MERGEMERGE存储引擎允许将一组使用MyISAM存储引擎的并且表结构相同(即每张表的

43、字段顺序、字段名称、字段类型、索引定义的顺序及其定义的方式必须相同)的数据表合并为一个表,方便了数据的查询。需要注意的是,使用MERGE“合并”起来的表结构相同的表最好不要有主键,否则会出现这种情况:一共有两个成员表,其主键在两个表中存在相同情况,但是写了一条按相同主键值查询的SQ1.语句,这时只能查到UNION列表中第一个表中的数据。MERGE存储引擎允许集合将被处理同样的MylSAM表作为一个单独的表。适用场景:MERGE存储引擎允许MySQ1.DBA或开发人员将一系列等同的MylSAM表以逻辑方式组合在一起,并作为1个对象引用它们。对于诸如数据仓库等,V1.DB(Very1.argeDataBase.超大型数据库)环境十分适合。优点:便于同时引用多个数据表而无须发出多条查询。缺点:不支持事务。5 .BDB(BerkeleyDB)BDB是事务型存储引擎,支持CoMMlT、RO1.1.BACK和其他事务特性,它由Sleepycat软件公司(http:/www.sleepycat.COm)开发。BDB是一个高性能的嵌入式数据库编程库(引擎),它可以用来保存任意类型的键/值对(Key/ValuePair),而且可以为一个键保存多个数据。BDB可以支持数干的并发线程同时操作数据库,支持最大256TB的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号