mysql存储过程的优缺点是什么
优点:
1、有助于提高应用程序的性能;
2、有助于减少应用程序和数据库服务器之间的流量;
3、对任何应用程序都是可重用且透明的;
4、可提高数据库的安全性和数据的完整性;
5、可使数据独立。
缺点:
1、如果使用许多存储过程,则使用这些存储过程的每个连接的内存使用量将显着增加;
2、存储过程的构造不是为开发复杂和灵活的业务逻辑而设计的;
3、调试存储过程很困难;
4、开发和维护存储过程并不容易。
存储过程的定义
存储过程是存储在数据库目录中的一段声明性SQL语句。存储过程可以由触发器,其他存储过程以及Java, Python,PHP等应用程序调用。
调用自身的存储过程称为递归存储过程。大多数数据库管理系统都支持递归存储过程。但是,MySQL并不支持它。在MySQL中实现递归存储过程之前,您应检查MySQL数据库的版本。
MySQL中的存储过程
MySQL被称为最受欢迎的开源RDBMS,它被社区和企业广泛使用。但是,在它存在的第一个十年中,它不支持存储过程,存储函数,触发器和事件。从MySQL 5.0开始,这些功能被添加到MySQL数据库引擎中,使其更加灵活和强大。
MySQL存储过程的优点
通常存储过程有助于提高应用程序的性能。
一旦创建,存储过程就会被编译并存储在数据库中。但是,MySQL实现的存储过程略有不同。MySQL存储过程是按需编译的。编译存储过程后,MySQL将其放入缓存并为每个连接维护自己的存储过程缓存。如果应用程序在单个连接中多次使用存储过程,则使用编译版本,否则,存储过程的工作方式类似于查询。
存储过程有助于减少应用程序和数据库服务器之间的流量,因为应用程序必须只发送存储过程的名称和参数,而不是发送多个冗长的SQL语句。
存储过程对任何应用程序都是可重用且透明的。存储过程将数据库接口公开给所有应用程序,以便开发人员不必开发存储过程中已经支持的功能。
提高数据库的安全性和数据的完整性。
存储过程提高安全性的一个方案就是把它作为中间组件,存储过程里可以对某些表做相关操作,然后存储过程作为接口提供给外部程序。这样,外部程序无法直接操作数据库表,只能通过存储过程来操作对应的表,因此在一定程度上,安全性是可以得到提高的。
使数据独立。
数据的独立可以达到解耦的效果,也就是说,程序可以调用存储过程,来替代执行多条的 SQL 语句。这种情况下,存储过程把数据同用户隔离开来,优点就是当数据表的结构改变时,调用表不用修改程序,只需要数据库管理者重新编写存储过程即可。
除了这些优点之外,存储过程也有其自身的缺点,在数据库中使用它们之前应注意这些缺点。
MySQL存储过程的缺点
如果使用许多存储过程,则使用这些存储过程的每个连接的内存使用量将显着增加。此外,如果在存储过程中过度使用大量逻辑操作,CPU使用率将会增加,因为数据库服务器没有针对逻辑操作进行良好设计。
存储过程的构造不是为开发复杂和灵活的业务逻辑而设计的。
调试存储过程很困难。只有少数数据库管理系统允许您调试存储过程。不幸的是,MySQL没有提供调试存储过程的工具。
开发和维护存储过程并不容易。开发和维护存储过程通常需要一种并非所有应用程序开发人员都具备的专业技能。这可能会导致应用程序开发和维护阶段出现问题。
MySQL存储过程各有优缺点。在开发应用程序时,应根据应用程序的体系结构决定是否使用存储过程。