一 物化视图
物化视图,它是用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。
只有大型数据库oracle10g,db2才支持这个功能,而MySQL5.1暂时还没有这个功能。本人通过事件调度和存储过程模拟了物化视图。下面大家一起来讨论吧。^-^
二 准备知识
1)存储过程:玩过数据库的人,都知道他是啥~,~
2)事件调度:在MySQL5.1开始才有的新功能。说白了就是个定时器。跟java里的timer差不多。
show processlist; --这个命令能是查看线程,如果启动了时间调度器,则会多个event_scheduler set global event_scheduler = on; --启动时间调度器,关闭就不用我说了吧,off就可以了 show processlist\G;--查看线程,是不是多了个 User: event_scheduler --如果想启动单个事件,则执行下面命令 ALTER EVENT `myEvent` ON COMPLETION PRESERVE ENABLE; --关闭 ALTER EVENT `myEvent` ON COMPLETION PRESERVE DISABLE;
mysql默认不会启动event,所以需要修改你的my.ini或my.cnf[mysqld]的下面加入如下行
event_scheduler=1
三 模拟物化视图
1)先建个基表吧。
CREATE TABLE `user` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`Id`) );
2)设计视图
我想查询所有18岁员工的数量。
很简单,select count(*) from user where age=18;
如果是传统概念的视图,在MySQL中,每次访问视图的时候,他都会创建个临时表,然后执行一次。在海量数据的情况下,这样的效率是非常低的。而物化视图,则他会定时去刷新这个临时表,而不是你在用的时候才会去刷新。并且物化视图的"临时表"是一直存在的。所以效率高出非常多。拿空间换时间^-^
3)创建"物化视图"的表
CREATE TABLE `user_view` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `c` int(11) DEFAULT NULL, PRIMARY KEY (`Id`) );
4)设计存储过程
CREATE PROCEDURE demoSp() BEGIN DECLARE z INT; SELECT COUNT(*) INTO z FROM user; delete from user_view; insert into user_view(c) values(z); END;
5)设计调度并执行,为了使实验明显,我就把调度设置成5秒一次吧。周期可以自己调节。
CREATE EVENT `myEvent` ON SCHEDULE EVERY 5 SECOND ON COMPLETION PRESERVE DO call demoSp();
四 总结
上面的实现,可能不太明显,但在海量数据处理的时候进行统计,性能有明显的提升。大家做实验的时候,可以增加一个insert语句,方便观察。在更新数据的时候,如果数据量大,则需要按下面步骤来处理
1)delete 1条记录
2)insert 1条记录
3)提交
如果一次性把数据全部删除,在查询的时候,有可能会出现空表的现象。而且会影响统计使用。
通过利用这个事件调度,定时备份的事情也同时解决了.
建议大家配合表分区,索引同时使用,这样可以提高性能.
未完成:在更新表的时候,需要采用某种算法来执行,这样才能提高性能,而不是单纯的删除再插入.
有问题大家请留言交流。版权所有,转载请注明出处 ^-^
相关推荐
真正值得一看的mysql知识。MySQL中实现物化视图(中文版)翻译于外文。
在MySQL中,**视图**是一种特殊的虚拟表,其结果集由从本机表中选择的数据组成。视图并不存储实际的数据,而是存储一条SELECT语句,当用户访问视图时,数据库引擎会执行该SELECT语句并返回结果。因此,视图可以被视...
mysql高级笔记 P1 day01-02. MySQL 高级 - Linux上安装MySQL P2 day01-03. MySQL 高级 - 启动及登录MySQL... MySQL 高级 - 视图 - 创建及修改视图 P13 day01-14. MySQL 高级 - 视图 - 查看及删除视图 P14 day01-15. MyS
总结,`mysql-connector-java-5.1.40.zip`和`mysql-connector-java-5.1.10.jar`是MySQL与Java应用交互的关键组件,它们通过JDBC实现了数据存取功能。了解和正确使用这些文件,可以帮助Java开发者更高效地与MySQL...
- **物化视图**:虽然MySQL不直接支持物化视图,但在某些情况下可以通过其他方式模拟物化视图的功能,如使用InnoDB表存储查询结果来加速访问。 - **基表**:视图所依赖的原始数据表。对视图的操作最终会影响到基表...
在这个"mysql-connector-java-8.0.28.tar.gz"压缩包中,包含了版本为8.0.28的MySQL Connector/J,这是一个稳定且功能丰富的驱动,适用于各种Java应用,包括大数据处理平台如Hive。 Hadoop是一个开源的分布式计算...
MySQL是世界上最流行的开源关系型数据库管理系统之一,而`mysql-connector-java`是MySQL官方提供的用于Java应用程序连接到MySQL服务器的驱动程序。`mysql-connector-java-5.1.27.jar`是这个驱动的一个特定版本,它...
在本压缩包"mysql-connector-odbc-5.1.6-win32.rar"中,我们找到了MySQL Connector/ODBC 5.1.6的Windows 32位版本的安装程序,适用于那些运行在32位Windows操作系统上的应用。 MySQL Connector/ODBC是MySQL公司开发...
第一章 MySQL基础-简单查询 数据库的概念 数据库: 存储数据的大型仓库, 数据库由表,视图,触发器,函数,存储过程,事件等组成的. 表是存储数据的核心. 数据库服务器: 软件服务器,不是硬件服务器, 安装mysql之后启动的...
5. 处理结果集:遍历`ResultSet`对象,获取和处理数据 6. 关闭连接:`conn.close()`,确保资源释放 除了基本的数据库连接,这个驱动还支持更高级的功能,如预编译的PreparedStatement,事务控制,批处理,连接池...
在描述中提到的“mysql-connector-odbc-3.51.26-win32”是针对Windows平台的一个特定版本,它特别之处在于对MySQL 5.0及以上版本的支持。这意味着即使您的MySQL服务器升级到5.0或更高版本,此驱动仍然能够正常工作,...
1. `mysql-connector-java-8.0.33.jar`:这是核心的JDBC驱动文件,包含所有必要的类和方法,用于在Java应用程序中建立与MySQL服务器的连接,执行SQL语句,处理结果集等。 2. `README`:一般包含了关于驱动的基本...
总而言之,`mysql-connector-java-5.1.47.jar`是Java应用程序与MySQL数据库之间的重要组件,它实现了JDBC标准,使得Java开发者能够方便地操作MySQL数据库,进行数据的存取和处理。在项目中正确配置和使用该驱动,...
`mysql-connector-odbc-5.3.4-win32.msi` 文件是 MySQL Connector/ODBC 5.3.4 版本的安装程序,专为 32 位 Windows 操作系统设计。 MySQL Connector/ODBC 的主要功能包括: 1. **数据源管理**:它允许用户创建、...
MySQL-connector-java-8.0.28 是MySQL数据库与Java应用程序之间通信的重要组件,它是一个JDBC(Java Database Connectivity)驱动程序,使得Java开发者能够通过编写Java代码来访问和操作MySQL数据库。在这个版本中,...
"mysql-connector-java-5.1.7-bin.jar" 文件就是这个桥梁,它是一个Java归档(JAR)文件,包含了MySQL JDBC驱动的所有必要组件。 MySQL JDBC驱动,也被称为MySQL Connector/J,允许Java应用程序通过遵循JDBC API来...
综上所述,`mysql-connector-java-5.1.10-bin.jar`是连接Sqoop与MySQL的关键组件,它使得在大数据处理流程中进行高效的数据迁移成为可能。正确配置和使用这个驱动,能够实现Hadoop与MySQL之间的无缝数据交互,从而...
在这个"mysql-connector-java-8.0.11"压缩包中,包含的是MySQL官方发布的针对Java的最新版本连接器,版本号为8.0.11。 1. **JDBC接口**:JDBC是Java语言访问数据库的标准接口,由Java SE的java.sql包提供。它定义了...
在Windows环境中,`mysql-connector-odbc-5.1.8-win32.msi` 是MySQL提供的ODBC驱动程序安装包,用于在Windows操作系统上建立与MySQL数据库的ODBC连接。 在本场景中,`mysql-connector-odbc-5.1.8-win32.msi` 是一个...
这可以通过Maven或Gradle等构建工具完成,或者手动将`mysql-connector-java-8.0.29.jar`添加到项目的类路径中。一旦引入,就可以通过以下步骤建立数据库连接: 1. 加载驱动:使用`Class.forName()`方法加载`...