数据库高级应用技术08-(数据库调优).ppt
《数据库高级应用技术08-(数据库调优).ppt》由会员分享,可在线阅读,更多相关《数据库高级应用技术08-(数据库调优).ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 高等职业技术院校教材高等职业技术院校教材 数据库高级应用技术数据库高级应用技术 主编:温立辉主编:温立辉1 数据库调优数据库调优本单元教学目标本单元教学目标了解数据库调优的重要意义了解数据库调优的技术、方法、原理掌握数据库分区、分表、建索引技术能够编写出高效的SQL语句2 分区分区n定义:n将一个大表的数据分段划分在多个位置存放n可以是同一块磁盘也可以在不同的机器n分区后,表面上还是一张表,但数据散列到多个位置了。3 分区类型分区类型nMySQL支持RANGE,LIST,HASH,KEY分区类型,n其中以RANGE最为常用nRange(范围)n这种模式允许将数据划分不同范围。n例如可以将一个
2、表通过年份划分成若干个分区。nHash(哈希)n这种模式允许通过对表的一个或多个列的Hash Key进行计算,n最后通过这个Hash码不同数值对应的数据区域进行分区。nKey(键值)nHash模式的一种延伸,这里的Hash Key是MySQL系统产生的。nList(预定义列表)n这种模式允许系统通过预定义的列表的值来对数据进行分割。4 查看是版本否支持分区查看是版本否支持分区nshow variables like%partition%n如果变量的值是YES,那么支持分区n如果变量值是空白,则不支持分区 5 分区脚本分区脚本n-创建range分区表nDROP TABLE IF EXISTS u
3、ser;nCREATE TABLE IF NOT EXISTS user(nid int(11)NOT NULL AUTO_INCREMENT COMMENT 用户ID,nname varchar(50)NOT NULL DEFAULT COMMENT 名称,nsex int(1)NOT NULL DEFAULT 0 COMMENT 0为男,1为女,nPRIMARY KEY(id)n)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1nPARTITION BY RANGE(id)(nPARTITION p0 VALUES LESS THAN(
4、3),nPARTITION p1 VALUES LESS THAN(6),nPARTITION p2 VALUES LESS THAN(9),nPARTITION p3 VALUES LESS THAN(12),nPARTITION p4 VALUES LESS THAN MAXVALUEn);n-插入数据nINSERT INTO user(name,sex)VALUES(tank,0)n,(zhang,1),(ying,1),(zhang,1),(ying,0),(test1,1),(tank2,1)n,(tank1,1),(test2,1),(test3,1),(test4,1),(tes
5、t5,1),(tank3,1)n,(tank4,1),(tank5,1),(tank6,1),(tank7,1),(tank8,1),(tank9,1)n,(tank10,1),(tank11,1),(tank12,1),(tank13,1),(tank21,1),(tank42,1);6 分区脚本解释分区脚本解释nPARTITION BY RANGE(id)n对表中的id字段以RANGE方式进行分区操作n分区的字段必须是表中主键(如果表中有主键)nPARTITION p0 VALUES LESS THAN(3)n分区字段的值 3 时,记录将存放在p0分区nPARTITION p1 VALUE
6、S LESS THAN(6)n3=分区字段的值 6 时,记录将存放在p1分区7 数据表的分区信息数据表的分区信息n可以在information_schema库的PARTITIONS表中检索到n如可检索到刚刚创建的User表分区信息 8 删除表分区删除表分区n删除表分区语法:nALTER TABLE+表名表名+DROP PARTITION+分区名分区名n下面语句删除user表的P4分区nALTER TABLE user DROP PARTITION P4n n删除表分区时,分区上的数据会被删除删除表分区时,分区上的数据会被删除 9 对已存在的表进行分区对已存在的表进行分区 n操作的语法:nALT
7、ER TABLE+表名+分区语句10 myorder.sql脚本脚本nUSE test;nDROP TABLE IF EXISTS test.myorder;nCREATE TABLE test.myorder(n id int(10)unsigned NOT NULL,n goods_id int(10)unsigned NOT NULL,n price float NOT NULL,n order_time datetime NOT NULLn)ENGINE=InnoDB DEFAULT CHARSET=utf8;nINSERT INTO MYORDER VALUES(1000,2000,
8、100,2005-03-04 00:00:00);nINSERT INTO MYORDER VALUES(1001,2001,200,2008-06-08 00:00:00);nINSERT INTO MYORDER VALUES(1002,2002,300,2011-08-09 00:00:00);nINSERT INTO MYORDER VALUES(1003,2003,400,2014-01-08 00:00:00);nINSERT INTO MYORDER VALUES(1004,2004,500,2016-03-02 00:00:00);nINSERT INTO MYORDER VA
9、LUES(1005,2005,600,2016-05-04 00:00:00);11 添加分区操作添加分区操作n用myorder.sql脚本初始化环境建表,n然后可用下面语句对此表加上分区操作:nALTER TABLE test.myorder PARTITION BY RANGE(YEAR(order_time)(nPARTITION Y1 VALUES less than(YEAR(2007-01-01),nPARTITION Y2 VALUES less than(YEAR(2010-01-01),nPARTITION Y3 VALUES less than(YEAR(2015-01-0
10、1),nPARTITION Y4 VALUES less than MAXVALUEn);12 课堂练习课堂练习n创建一新闻表:n按要求对其进行分区,n然后用存储过程往其插入100000条数据,n最后测试各分区上的数据的检索时间是否相同。n表结构:n新闻ID,INT类型,自增,主键n新闻标题,VARCHAR(50)类型n新闻内容,VARCHAR(500)类型n创建时间,DATETIME类型n表分区:n以新闻ID为字段,对其进行分区,n5000以下记录进入NEWS1区n5000-20000之间记录进入NEWS2区n20000以上记录进入NEWS3区 13 分表分表n定义:n将一个大表按照一定的规
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 高级 应用技术 08
限制150内