- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MySQL 下使用 Sequence 功能 Oracle 提供了 sequence 功能,但是 MySQL 不知道为什么到现在都还没有这个简单的功能,所以有很多人就想方设法在 MySQL 上扩展,进而支持 Sequence, 但是一些好的解决方案都没有考虑到性能和并发连接数据库时 Sequence 的唯一性,下面就针对这些做一些简要的分析,进而提出完美的解决方案。 来自互联网的最好的解决方案是建立一个表来存储 sequence,这个思路很好,但是如果选择数据库的引擎不当就会造成性能下降或者 sequence 重复,导致失去 sequence 的意义。 首先说性能,往往 sequence 要求的是全局变量,这样所有的系统都从一个地方获取 sequence,所以就要求这个引擎有很高的性能,而采用数据表存储的sequence 要求反复的读写数据库,如果采用 InnoDB,会导致 update 速度非常缓慢,而不能满足大量请求的快速响应,从而可能造成系统瓶颈,分析原因,是因为 InnoDB 是采用行锁定的方式,这样就会造成对并发请求的排队响应,进而严重影响速度,而 MyISAM 引擎采用表锁定方式,就大大缩短了请求的排队时间, MEMORY 是基于内存的引擎,所有的数据操作都在内存中进行,速度更快,所以数据库引擎应该采取 MyISAM 或者 MEMORY。 进过进一步的分析,发现如果采用常用的普通字段存储 sequence 值,每次采用 update 方式更新,在 MyISAM 和 MEMORY 引擎时,如果有多个连接并发请求就会导致 sequence 重复,原因是这两种引擎都是表锁定的,也就是并发时可能有多次同时 update 语句执行,而要规避这个情况出现,只有采用记录锁定的引擎,也就是 InnodB,但是效率又不能满足要求,如何解决这个矛盾呢?我又一次陷入了深深地思索之中...... 这个时候一个常用的字段类型闪过了我的脑海“ auto_increment”对,这个本身就是自动增涨的,和我们的 sequence 非常类似,为什么不在它身上打主意呢! 我立即修改了网上常用方法的表结构,直接设置一个主键,该主键是一个 auto_increment 类型的 int 字段,当然可以根据需求设置初始值和增长步进值。经 过这么改造以后,无论采用什么引擎,在多联接并发的情况下再也不会出现sequence 值重复的情形了。但是,MEMORY 是基于内存的,数据并不存在物理磁盘上,一旦数据库重启,数据就会丢失,所以不能采用。 经过反复的对比分析,最终选择的一个完美的解决方案:数据库引擎采用 MyISAM,sequence 存储在 auto_increment 的字段内。 下面是建表SQL及内置函数: DROP TABLE IF EXISTS `SequenceTest`.`sequence`; CREATE TABLE `SequenceTest`.`sequence` ( `id` int(11) unsigned NOT NULL auto_increment, `name` varchar(45) NOT NULL, PRIMARY KEY (`id`), KEY `Index_2` (`name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; 获取当前 sequence 值的函数 DELIMITER $$ DROP FUNCTION IF EXISTS `currval` $$ CREATE FUNCTION `currval`(seq_name VARCHAR(50)) RETURNS int(11) DETERMINISTIC BEGIN DECLARE value INTEGER; SET value = 0; SELECT id INTO value FROM sequence WHERE name=seq_name; RETURN value; END $$ DELIMITER ; 获取下一个新 sequence 的函数 DELIMITER $$ DROP FUNCTION IF EXISTS `nextval` $$ CREATE FUNCTION `nextval`(seq_name VARCHAR(50)) RETURNS int(11) DETERMINISTIC BEGIN DELETE FROM sequence WHERE name=seq_name; INSERT INTO sequence(name) VALUES(seq_name); RETURN currval(seq_name); END $$ DELIMITER ; 测试 SQL:
您可能关注的文档
- MSCRM 2011安装向导分析和总结.docx
- msp430f149学习板分析和总结.docx
- MS培养基及配制注意事项.docx
- MT24422005煤矿窄轨车辆连接件连接插销.docx
- MTK程序编译分析和总结.docx
- MT咬花规格分析和总结.docx
- mvcbscs 三层构架关系.docx
- MVC开发模式分析和总结.docx
- MY2003信息沟通控制程序.docx
- MY2006设施和工作环境控制程序.docx
- 2025年无人机低空医疗物资投放社会效益报告.docx
- 2025年再生塑料行业包装回收利用产业链重构研究.docx
- 《AI眼镜周边产品市场机遇:2025年终端销售与需求增长洞察》.docx
- 2025年坚果加工行业深加工技术突破与市场拓展策略报告.docx
- 2025年通信芯片行业技术竞争与未来趋势报告.docx
- 《2025年生鲜电商配送冷链事故分析与预防措施》.docx
- 《商业航天融资新趋势2025民营卫星企业资本涌入估值分析市场动态》.docx
- 2025年能源绿色健康行业创新技术与市场应用报告.docx
- 2025年无人机低空医疗救援通信方案分析报告.docx
- 2025年烹饪机器人行业市场集中度分析报告.docx
最近下载
- 高职学生安全教育(第三版)(吴超 )全套PPT课件.pptx
- 2025至2030年中国宗教工艺品市场现状分析及前景预测报告.docx
- 新疆大学《C语言程序设计》2017-2018学年第二学期期末试卷.pdf VIP
- 《当幸福来敲门》ppt课件.pptx VIP
- 2025年职业技能鉴定考试烟草物流师·三级题库含答案详解.docx VIP
- 中望3D建模-全套PPT课件.pptx
- 新疆大学《C语言程序设计》2019-2020学年第二学期期末试卷.pdf VIP
- 房产证翻译模板.docx VIP
- 《电磁场理论》3.3 直角坐标中的分离变量法.ppt VIP
- GZ071 城轨智能运输赛项正式赛卷模块A15-高职组_电话闭塞法接发列车_下行-第三阶段-2023年全国职业院校技能大赛赛项正式赛卷.pdf VIP
有哪些信誉好的足球投注网站
文档评论(0)