第一部分:基础知识:
l ) Mysql 优化:(这是一个综合性的问题,主要有以下几方面的综合作用达到优化效果)
1. 表的设计要合理化(符合3NF);
2. 适当建立索引
3. 存储过程(因为存储过程已经是二进制的数据库对象,这样就避免了sql语句的编译);
4. 表的分割(水平分割和垂直分割);
5. 读写分离(读:select;写:update,insert,delete)
6. 定时升级服务器硬件和清除数据库中废数据
2) 数据库的三层结构:程序,DBMS和数据库文件(程序和DBMS交互,DBMS和数据库文件交互后再返回结果给程序)。
l3) 存储过程比普通sql语句效率高的原因:程序将sql语句传递给DBMS,DBMS将sql语句进行编译,执行和把执行结果缓存起来;由于存储过程已经是二进制的数据库对象,这样就避免了sql语句的编译,可以直接执行!其次,就是模块化编程。
4) 关系型数据库之所以称之为“关系型”,是因为表之间存在附属(依赖)关系,例如评论表中的每一条评论记录都是属于user表中的一个用户的,每个部门员工都是属于现实中存在的某一个部门的。
5) 3NF的真正深入理解:1NF:是指表中字段所指的意思是明确的,不可分解的,例如user表中的address字段,如果是“中国广东广州天河龙洞”,那么这个值也是明确的,可以指定一个地方而不会有歧义或者是范围很泛。在所有的关系型数据库中,默认创建字段都是符合1NF的;2NF:是指表中的记录都是唯一的,就是说要有主键,在此要注意的是,一般主键的设计都是:不涉及业务逻辑,而且都是自增长的(例如商品表一般不会使用商品的id作为主键,而是另外采用自增长的数字),原因是自增长:可以保证表中的记录符合2NF,不涉及业务逻辑:可以确保记录的稳定性,不会被程序修改而变动;3NF:是指数据库中不要存在数据冗余,一般会出现在字段上,分别是一张表的字段间可以相互推导出来和多张表之间的字段可以推导出来,例如一张部门表(departmentId,departmentName)和一张员工表(employeeId,name,money,departmentId, departmentName),这样就存在冗余,因为完全可以通过departmentId来推导出departmentName。但是要注意的是,并非符合3NF的设计的数据库就是好的数据库,有时候如果太按照概念来设计的话,会间接地增加了服务器的负担,例如现在要计算每个部门的员工薪酬总和,那么就得每次都将两张表连接一次再聚合,还不如直接在部门表中增加totalMoney字段就可以直接获取,省掉了连接(这个例子在这方面体现不是明显,你可以想想QQ空间中的相册表和图片表,如果要统计每个相册的图片的浏览次数的话,一亿个人访问的话就得连接一亿次!!!),所以我们往往会因为实际情况来降低范式(就是增加字段)。
5) dual:是一张表,称为:亚元表。
6) 通过cmd输入:netstat后各选项的理解:内部地址,外部地址和如何kill掉连
(其实就是kill掉此连接对应的进程id号PID);
7)图形化界面工具Navicat中的新建的一个连接(例如这个软件安装时默认自动建立的连接,名字是mysql)则是同一个用户的一次连接(应该叫session吧)。一个用户可以有很多次连接(session)!!
8)show [global/session] status [ like ‘#####’];作为一个DBA,必须要把此命令下的所有的命令都熟悉;如果是程序员的话,直到常用的几个即可!
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29900383/viewspace-1461548/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29900383/viewspace-1461548/