- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MySQL由浅至深(十)
MySQL课程
第十章
要做就做最好,要不就不做!
MySQL存储引擎的体系结构
插件式存储引擎体系结构提供了标准的管理和支持服务集合,它们对所有的基本存储引擎来说是共同的。存储引擎本身是数据库服务器的组件,负责对在物理服务器层面上维护的基本数据进行实际操作。
这是一种高效的模块化体系结构,它为那些希望专注于特定应用需求的人员提供了巨大的便利和益处,这类特殊应用需求包括数据仓储、事务处理、高可用性情形等,同时还能利用独立于任何存储引擎的一组接口和服务。
应用程序编程人员和DBA通过位于存储引擎之上的连接器API和服务层来处理MySQL数据库。如果应用程序的变化需要改变底层存储引擎,或需要增加1个或多个额外的存储引擎以支持新的需求,不需要进行大的编码或进程更改就能实现这类要求。MySQL服务器体系结构提供了一致和易于使用的API,这类API适用于多种存储引擎,通过该方式,该结构将应用程序与存储引擎的底层复杂性隔离开来。
MySQL体系结构
MySQL体系结构图:
MySQL选择存储引擎
与MySQL一起提供的各种存储引擎在设计时考虑了不同的使用情况。为了更有效地使用插件式存储体系结构,最好了解各种存储引擎的优点和缺点。
在下面的表格中,概要介绍了与MySQL一起提供的存储引擎。
MySQL项目案例
系统自动增长的系统流水号如下:
DROP TABLE IF EXISTS UM_SEQUENCE;
CREATE TABLE UM_SEQUENCE (
SID VARCHAR(22) NOT NULL,
CURRENT_VALUE VARCHAR(10) NOT NULL,
INCREMENT INT NOT NULL DEFAULT 1
) ENGINE=INNODB;
INSERT INTO UM_SEQUENCE VALUES (1000201111020000000000,0000000000,1);
MySQL项目案例-获取当前流水
获取当前流水号值函数
DROP FUNCTION IF EXISTS CURVAL;
DELIMITER $
CREATE FUNCTION CURVAL()
RETURNS TEXT
DETERMINISTIC
BEGIN
DECLARE VALUE VARCHAR(22);
SELECT SID INTO VALUE FROM UM_SEQUENCE;
RETURN VALUE;
END $
DELIMITER ;
MySQL项目案例-获取新的流水
获取下一个流水号值函数
DROP FUNCTION IF EXISTS NEXTVAL;
DELIMITER $
CREATE FUNCTION NEXTVAL()
RETURNS TEXT
DETERMINISTIC
BEGIN
UPDATE UM_SEQUENCE SET SID = CONCAT(1000,DATE_FORMAT(CURDATE(),%Y%m%d),RIGHT(CONCAT(0000000000, CURRENT_VALUE + INCREMENT), 10)),
CURRENT_VALUE = RIGHT(CONCAT(0000000000, CURRENT_VALUE + INCREMENT), 10);
RETURN CURVAL();
END $
DELIMITER ;
MySQL项目案例-设置当前流水
设置当前流水号值函数
DROP FUNCTION IF EXISTS SETVAL;
CREATE FUNCTION SETVAL(NUM INTEGER)
RETURNS TEXT
DETERMINISTIC
BEGIN
UPDATE UM_SEQUENCE SET SID = CONCAT(1000,DATE_FORMAT(CURDATE(),%Y%m%d),RIGHT(CONCAT(0000000000, NUM), 10)),
CURRENT_VALUE = RIGHT(CONCAT(0000000000, NUM), 10);
RETURN CURVAL();
END;
文档评论(0)