Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1367599
  • 博文数量: 243
  • 博客积分: 888
  • 博客等级: 准尉
  • 技术积分: 2955
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-05 14:33
个人简介

漫漫长路,其修远兮!

文章分类

全部博文(243)

文章存档

2017年(2)

2016年(22)

2015年(32)

2014年(57)

2013年(107)

2012年(23)

分类: Mysql/postgreSQL

2013-09-06 14:54:33

1.请用图框的方式大致地描绘出MySQL架构体系.
忽略

2.限定MySQL5.5及以下为例,InnoDB存储引擎与MyISAM存储引擎的区别,至少写四点.

特点

MyISAM

Innodb

名称

Indexed Sequential Access Method(索引顺利访问)

 

文件构成

frm (存储表的定义)

MYD (存储数据)

MYI (存储索引)

索引文件和数据文件可以放在不同的目录,需要在创建表的时候通过DATA directoryindex directory语句指定

innodb:有两种存储方式

共享表空间存储:表结构保存在.frm文件中,数据和索引保存在ibdata

多表空间存储:表结构保存在.frm文件中,每个表的数据和索引单独保存在.ibd

修改innodb_file_per_table10

存储限制

有,在5.0版本以前,默认大小只支持4G。取决于OS文件大小的限制,你可以使用SHOW TABLE STATUS语句或myisamchk -dv tbl_name检查表的最大尺寸.myisam支持3种不同的存储格式:

静态表

动态表

压缩表

64TB

事务安全

 

支持

锁机制

表锁

行锁

B树索引

支持

支持

哈希索引

 

 

全文索引

支持

 

集群索引

 

支持

数据缓存

 

支持

索引缓存

支持

支持

数据可压缩

支持

 

空间使用

内存使用

批量插入的速度

支持外键

 

支持

数据物理存储

按插入数据的顺序存储

按照主键集聚存储


3.MySQL中控制内存分配的全局参数,有哪些?

public主要包括:key_buffer_size, innodb_buffer_pool_size, innodb_additional_memory_pool_size, innodb_log_buffer_size, query_cache_size
private主要包括:read_buffer_size, sort_buffer_size,join_buffer_size, read_rnd_buffer_size, tmp_table_size


4.请简洁地描述下MySQL中InnoDB支持的四种事务隔离级别名称,以及逐级之间区别?

READ UNCOMMITED
SELECT的时候允许脏读,即SELECT会读取其他事务修改而还没有提交的数据。
READ COMMITED
SELECT的时候无法重复读,即同一个事务中两次执行同样的查询语句,若在第一次与第二次查询之间时间段,其他事务又刚好修改了其查询的数据且提交了,则两次读到的数据不一致。
REPEATABLE READ
SELECT的时候可以重复读,即同一个事务中两次执行同样的查询语句,得到的数据始终都是一致的。
SERIALIZABLE
与可重复读的唯一区别是,默认把普通的SELECT语句改成SELECT …. LOCK IN SHARE MODE。即为查询语句涉及到的数据加上共享琐,阻塞其他事务修改真实数据。


5. 小题集锦
1>.VARCHAR(N) 或 CHAR(N)中的N含义是:
N代表的是字符个数

2>.若一张表中只有一个字段VARCHAR(N)类型,utf8编码,则N最大值为多少(精确到数量级即可):
65535/3

3>.表中有大字段X(例如:text类型),且字段X不会经常更新,以读为为主,请问您
是选择拆成子表,还是继续放一起,并且写出您的 理由?
答案:
拆分成子表

理由:
1.读写分离
2.减少数据页拆分和链接

4>.MySQL中InnoDB引擎的行锁是通过加在什么上完成(或称实现)的:
A. 数据块
B. 索引值
索引值

选择答案后,告诉我们为什么?
答:
     
5>.username字段定义为VARCHAR(40)和VARCHAR(200) 有啥区别?
答:
可以存储长度一个是40,一个是200,如果超过255长度就要使用2个字节存储一个字符,这里设置200不知道是什么意思?



6>.MySQL数据库备份方式有那几种(只讨论InnoDB存储引擎),至少写四种。
1.mysqldump
2.xtrabackup
3.直接拷贝数据文件
4.主从复制也算备份一种


6. MySQL复制搭建M->N的过程,请简述各个步骤?(备注:M已经在线跑,N为新安装的MySQL服务器)
1>.mysqldump  --single-transaction --master-data=2  导出数据
2>.把dump出来的数据导入到新的mysql服务器
3>.在主库上建立一个复制账号repliaction slave repliaction client
4>.change master to .....
5>.start slave 


7. 看图分析(申明:应用程序未有任何版本变更)
 


1>.图出现什么样的现象,及现象关联性?




2>.通过图分析可能什么原因造成的?




3>.准对分析的原因,告知如何解决




4>.你是怎样思考分析的?
答:




8.SQL语句优化
原SQL语句:
SELECT ID,WAYBILL_NO,EXP_TYPE,PKG_QTY,EXPRESS_CONTENT_CODE,EFFECTIVE_TYPE_CODE
FROM T_EXP_OP WHERE ORDERID NOT IN(SELECT ORDERID FROM T_EXP_OP WHERE AUX_OP_CODE IN ('NEW','UPDATE','DELETE') AND ((OP_CODE IN (176, 162, 171, 131, 136)AND EXP_TYPE IN ('10', '20', '30')) OR (OP_CODE IN (191, 121)AND EXP_TYPE IN ('10', '20')) OR (OP_CODE IN (181, 111)AND EXP_TYPE = '10'))) LIMIT 10;


条件:
T_EXP_OP表主键为BIGINT类型的ID字段,存储引擎为InnoDB,无其他索引


优化后为:




9. 分页SQL语句优化
原SQL语句:
SELECT * FROM test FORCE(idx_m_n) WHERE m=1 ORDER BY n LIMIT 1000,10;


条件:
Test表为InnoDB存储引擎,主键为BIGINT类型的ID字段,二级索引:idx_m_n(m,n)


优化后为:




10. 语句挑错
SQL语句:
SELECT M.columnname……,N.* columnname…..
FROM left_table M  LEFT JOIN right_table N 
ON M. columnname_join=N. columnname_join  AND N. columnname=XXX AND M.columnname=XXX


请问本SQL语句哪里不合理,为啥不合理?
答:




11. [SELECT *] 和[SELECT 全部字段]的2种写法有何优缺点,至少写出四点
1>.
2>.
3>.
4>.
5>.


12. HAVNG 子句 和 WHERE的异同点,至少写出3点
1>.
2>.
3>.
4>.


13. 分布式数据库产品的特点(至少写4条)
1>.
2>.
3>.
4>.
5>.


14. 数据拆分架构 的优缺点(至少写8条)
1>.
2>.
3>.
4>.
5>.
6>.
7>.
8>.
9>.
    
15. 工作是否还有MySQL疑难至今未解决(备注:有,请简洁描述;若无,请写无)?
答:
   
   
   
16. 你对自己的未来3-5年的规划,以及近期1-2年的规划
答:

阅读(4163) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

dba_life2013-09-10 15:48:38

欢迎 讨论这些题目~