共享几个项目中用到的MySQL扩展函数

扩展性的几个方面 X:服务,数据的水平复制(数据副本),多实例部署;弹性扩容伸缩性能规划业务解耦部署复杂度增加Y:按功能、服务或资源划分。{% psw 文本内容 %}Y轴伸缩将整体应用程序拆分为一组服务。每个服务都实现了一组相关的功能,如订单管理、客户管理、库存等。此外,每个服务应该有自己的非共享数据,以确保高可用性和故障隔离。Y 轴伸缩与多维数据集的所有轴共享增加事务可伸缩性的好处。Z: 根据(数据)逻辑划分划.{% u 基于每个记录的属性,将数据分区(又称分片)在一组服务器上进行了分区。 阅读详情
-- /*
--  * str_split(str,delim,pos)函数
--  * 用于获取一记录数据,根据传入的分隔字符delim,索引位置pos,返回相对应的value
--  * 如:str_split("aa,bb,cc", ",", 1) 则返回aa
--  */
DROP FUNCTION IF EXISTS str_split;
CREATE FUNCTION str_split
(
  str VARCHAR(255),
  delim VARCHAR(12),
  pos INT
) RETURNS varchar(255)
begin
  RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(str, delim, pos),LENGTH(SUBSTRING_INDEX(str,delim, pos -1)) + 1),delim,'');
end


-- /*
--  * get_distance(lng1,lat1,lng2,lat2)函数
--  * 根据地理两点的经纬度返回距离
--  */
DROP FUNCTION IF EXISTS get_distance;
create FUNCTION get_distance
(
  lng1 DECIMAL(12,6),
  lat1 DECIMAL(12,6),
  lng2 DECIMAL(12,6),
  lat2 DECIMAL(12,6)
)
RETURNS INT
BEGIN
   RETURN round(6378.138*2*asin(sqrt(pow(sin( (lat1*pi()/180-lat2*pi()/180)/2),2)+cos(lat1*pi()/180)*cos(lat2*pi()/180)* pow(sin( (lng1*pi()/180-lng2*pi()/180)/2),2)))*1000);
END


-- /*
--  * map_get(map,inputKey)函数
--  * 用于解析map结构的数据,根据传入的inputKey返回相对应的value
--  */
DROP FUNCTION IF EXISTS map_get;
CREATE FUNCTION map_get(
  map varchar(5000),
  inputKey varchar(300)
)
RETURNS VARCHAR(255)
BEGIN
    DECLARE rowSeperator char(1) default ';';  -- 行分隔符
    DECLARE fieldSeperator char(1) default '=';  --  键值对分隔符


    DECLARE tempMap varchar(255) default map;
    DECLARE isEnd boolean default false;


    DECLARE rowIndex int default 0;
    DECLARE pair varchar(255);
    DECLARE pairIndex varchar(255);
    DECLARE strKey varchar(255);
    DECLARE strValue varchar(255);


    WHILE isEnd = false do


        set rowIndex = locate(rowSeperator,tempMap);
        if rowIndex > 0 then
            set pair = substring(tempMap,1,rowIndex-1);
            set tempMap = substring(tempMap,rowIndex+1,9999999);
        else
            set pair = tempMap;
            set isEnd = true;
        end if;


        set pairIndex = locate(fieldSeperator,pair);
        if pairIndex > 0 then
            set strKey = substring(pair,1,pairIndex-1);
            set strValue = substring(pair,pairIndex+1,9999999);
            if inputKey = strKey then
                return strValue;
            end if;
        end if;


    END WHILE;


    return null;
END


-- /*
--  * map_get_json(map,inputKey)函数
--  * 用于解析JSON目标结构的数据,根据传入的inputKey返回相对应的value
--  * 一时没找到标准的解析JSON的自定义函数,就自己写了一个纯按字符串拆分获取的函数,记录数不是很大,json目标也不是很复杂,基本也可以用
--  */
DROP FUNCTION IF EXISTS map_get_json;
CREATE FUNCTION map_get_json(
  map varchar(5000),
  inputKey varchar(300)
)
RETURNS VARCHAR(255)
BEGIN
    DECLARE rowSeperator char(1) default ',';  -- 行分隔符
    DECLARE fieldSeperator char(1) default ':';  --  键值对分隔符


    DECLARE tempMap varchar(1024) default map;
    DECLARE isEnd boolean default false;


    DECLARE rowIndex int default 0;
    DECLARE pair varchar(255);
    DECLARE pairIndex varchar(255);
    DECLARE strKey varchar(255);
    DECLARE strValue varchar(255);


    set tempMap = trim(map);
    set tempMap = replace(substring(tempMap, 2, length(tempMap)-2), '"', '');


    WHILE isEnd = false do


        set rowIndex = locate(rowSeperator,tempMap);
        if rowIndex > 0 then
            set pair = substring(tempMap,1,rowIndex-1);
            set tempMap = substring(tempMap,rowIndex+1,9999999);
        else
            set pair = tempMap;
            set isEnd = true;
        end if;


        set pairIndex = locate(fieldSeperator,pair);
        if pairIndex > 0 then
            set strKey = trim(substring(pair,1,pairIndex-1));
            set strValue = trim(substring(pair,pairIndex+1,9999999));
            if inputKey = strKey then
                return trim(strValue);
            end if;
        end if;


    END WHILE;


    return null;
END

MySQL的动态扩展与微服务集成 在云原生时代,微服务架构成为构建现代应用的主流方式。微服务架构通过将复杂的系统拆分为多个独立的服务,实现了高可用性、可扩展性和灵活性。MySQL作为广泛使用的开源数据库,需要与微服务架构无缝集成,同时支持动态扩展以满足业务需求。本文将介绍如何将MySQL与微服务架构结合,并实现动态扩展。在云原生环境中,通过容器化技术和容器编排工具(如Kubernetes),可以实现MySQL与微服务架构的无缝集成,并支持动态扩展。 阅读详情

相关推荐

从零搭建风电场:手把手教你用WAsP+WindPRO完成风资源评估全流程

本文详细介绍了从零开始搭建风电场的全流程,重点讲解如何使用WAsP和WindPRO进行风资源评估和风场布局优化。内容包括软件配置、数据采集规范、风图谱建模实战、机组选型策略以及常见问题解决方案,帮助工程师掌握风电开发的核心技术,提升项目成功率。

year5的博客 369

【mysql】扩展-常用函数

一、概述 功能:类似Java中的方法; 优势:提高重用性和隐藏实现细节; 调用:select 函数名(参数列表)。 分类: 字符函数 数学函数 日期函数 聚合函数(之前已经学习过) 其他函数 二、字符函数 2.1、获取字符串所占字节数 语法:length('字符串') 注意:在utf-8编码下英文字符占一个字节,中文占三个字节。 # 获取“你好hello”字符串所占字节数 select length('你好hello'); # 查询员工姓名及姓名所占字节数 select ename, lengt

咖啡味的小认真 1031

COMSOL后处理与可视化

公众号→【COMSOL仿真交流】←更多精彩内容 后处理是采用COMSOL建模的一个重要环节。通过软件自带的可视化工具,可以快速方便的展现仿真结果。 COMSOL为使用者提供了多种后处理工具,包括表面图、切面图、等值线图、流线图、线图、体图等等。可按功能分为数据集(储存数据的地方)、派生值和表单(对数据进行进一步的操作)、绘图组合绘图类型(显示数据结果的地方)、导出数据与生成报告。   如果想用origin、matlab对模拟数据做进一步的处理,导出excel格式的模拟结果,这可以通过“导出

midiio的博客 4027

MySQL扩展函数

group_concat 函数的用法

weixin_57129977的博客 356

Halcon实战:5分钟搞定灰度图转热力图(附完整代码)

本文提供了一份Halcon实战指南,详细讲解如何在5分钟内将灰度图转换为直观的热力图。通过核心代码演示了利用HSV颜色模型进行色彩映射的原理与步骤,包括图像归一化、通道构建与空间转换,并附赠了深度图可视化等进阶应用技巧,帮助工程师快速提升图像分析效果。

weixin_29240343的博客 282

Docker 磁盘占用过多问题处理过程记录

Docker 磁盘爆满问题处理

MR.骑士道 3553

mysql_query扩展_mysql扩展函数

mysql由于其体积小、速度快、总体拥有成本低,尤其是具有开放源码这一特点,许多中小型网站为了减低网站总体拥有成本而选择了mysql作为网站数据库。而使用mysql数据库管理系统与php脚本语言相结合的数据库系统解决方案,正被越来越多的网站所采用,其中以LAMP(linux+apche+mysql+php)模式最为流行PHP有标准的函数用来操作数据库,mysqli是PHP5中新加的,是对mysql...

weixin_33148993的博客 474

开源多波束声呐数据集:从原始回波到AI识别的关键一步

本文探讨了开源多波束前视声呐数据集(UATD)在AI目标识别中的关键作用。通过分析原始回波数据与处理后数据的差异,揭示了开源数据集如何降低研究成本、提升实验可重复性,并加速技术迭代。文章还详细解析了UATD数据集的结构、实战应用技巧及从原始数据到AI模型的完整流程,为水下目标识别研究提供了宝贵参考。

weixin_28675839的博客 421

mysql扩展函数

mysql由于其体积小、速度快、总体拥有成本低,尤其是具有开放源码这一特点,许多中小型网站为了减低网站总体拥有成本而选择了mysql作为网站数据库。而使用mysql数据库管理系统与php脚本语言相结合的数据库系统解决方案,正被越来越多的网站所采用,其中以LAMP(linux+apche+mysql+php)模式最为流行  PHP有标准的函数用来操作数据库,mysqli是PHP...

weixin_33928137的博客 417

【Python_PySide6学习笔记(二十四)】菜单栏QMenuBar类的基本用法

此篇文章中介绍 PySide6 中 QMenuBar 类的基本用法,包括"创建菜单栏"、"创建一级菜单"、"创建二级菜单"等,会持续更新,有需要的读者可以点赞收藏,也欢迎在评论区进行讨论。

禾戊之昂的博客 1623

yolov5 FPGA实现及verilog代码仿真

本文介绍了一种基于FPGA的卷积神经网络加速器设计,采用混合架构实现网络功能。该系统将训练和图像预处理等复杂计算保留在PC端执行,仅将主干网络部署在FPGA上。由于片上资源限制,建议通过外接DDR存储扩展容量。文章提供了完整的Verilog HDL源码,包括卷积单元(convUnit)、卷积层(convLayerSingle)和处理单元(processingElement)等核心模块,均已通过仿真验证。该设计采用流水线结构,使用浮点运算单元实现卷积计算,支持32x32图像输入和5x5卷积核处理。系统架构图中

QQ_778132974的博客 575

mysql函数扩展之UDF开发

前言一开始接触到UDF是在目前开发的项目中,在项目的存储过程中接触到了这样一条sql语句:CREATE FUNCTION XXXXX RETURNS INTEGER SONAME "YYYYY.so";存储过程的名字叫做CreateUDF,当时看到这条语句很迷惑,根本不知道是做什么用的,只能在项目资源中查找YYYYY.so这个库文件,结果却什么也没有找到,一番努力之后我断定,项目中调用CreateU

AlbertS Home of Technology 4405

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

mysql集群共享目录

我整理的一些关于【MySQL,集群】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/yOSbkRMySQL集群共享目录实现指南 在本文中,我们将逐步指导你完成“mysql集群共享目录”的实现。主要目标是搭建一个MySQL集群,使得多个数据库实例能够共享存储目录以提高数据的可用...

weixin_41438021的博客 98

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

MySQL锁机制深度解析:从共享锁到排他锁

共享锁(Shared Lock),也称为读锁(Read Lock),是MySQL中最"友善"的锁类型。它就像一张阅览证,允许多人同时阅读同一本书,但不允许任何人修改这本书。工作原理其他事务仍可以对R加共享锁其他事务不能对R加排他锁多个共享锁可以并存,实现了"读-读"并发这种特性使得共享锁特别适合于读多写少的业务场景。排他锁(Exclusive Lock),也称为写锁(Write Lock),是一种独占性质的锁。比如图书馆中,管理员在整理一本书时会暂时禁止任何人借阅。工作原理。

sinat_27016095的博客 1524

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

mysql 共享表空间的扩展

innodb表空间的扩展: 在配置共享表空间的情况下,mysql数据目录下会有一个文件ibdata1,而且随着数据的增多,持续增加, 数据库的删除操作并不会缩减ibdata1的容量。 这是由于my.cnf的配置: innodb_data_file_path = ibdata1:10M:autoextend 配置说明,innodb共享表空间文件是ibdata1,并且初始设置10M空间,当表...

weixin_34391445的博客 174

扩展mysql_扩展mysql - 手把手教你写udf

1 MySQL简介MySQL是最流行的开放源码SQL数据库管理系统,相对于Oracle,DB2等大型数据库系统,MySQL由于其开源性、易用性、稳定性等特点,受到个人使用者、中小型企业甚至一些大型企业的广泛欢迎,MySQL具有以下特点:lMySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大的仓库内,这样就增加了速度并提高了灵活性。lMySQL软件是一种开...

weixin_33905143的博客 164

mysql共享表空间

一、共享表空间的介绍 共享表空间默认是开启的,默认文件名为ibdata1,保存在当前mysql实例的数据目录下(当然你也可以指定其它目录,建议就还是不指定存储路径了),文件默认只有一个,大小是12M,可以用以下命令查看共享表空间的文件名以及文件保存路径; mysql> show global variables like "innodb_data_file_path"; ...

dggwtsab530713的博客 390

MySQL 扩展

一、概述 MySQL 水平拓展的策略分为三个部分: 复制 拆分 数据分片(sharding) 二、复制 最简单也最常见的向外扩展的方法是通过复制将数据分发到多个服务器上,然后将备库用于读查询。这种技术对于以读为主的应用很有效,它也有一些缺点,例如重复缓存等等。 三、按功能拆分 按功能拆分,每个节点只包含特定应用所需要的数据,各个部分无须共享数据,可以按功能区域进行划分。如果有数据交叉的需求,也...

OOC_ZC的博客 528

MySQL - 深入解析MySQL高扩展性:从垂直扩展到分布式架构

MySQL高扩展性实战:从垂直扩展到水平分片 本文系统探讨了MySQL应对高并发场景的扩展策略。核心扩展方法论包括Shared Everything、Shared Disk和Shared Nothing三种架构模式。垂直扩展通过增强单机硬件(CPU/内存/存储)和引入缓存/队列来提升性能,但存在物理极限。水平扩展方案更适用于海量数据场景,包括主从复制实现读写分离、数据分片(垂直按业务拆分、水平按规则拆分)以及数据库中间件简化分片管理。文章还分析了表分区与分片的本质区别,并指出分片带来的跨库查询和扩容挑战。最

小工匠 1138

sshportal高可用架构:MySQL后端实现水平扩展的完整指南

sshportal是一款简单、有趣且透明的SSH(和telnet)堡垒机服务器,通过MySQL后端实现水平扩展能显著提升系统的可用性和负载能力。本文将详细介绍如何搭建基于MySQL的sshportal高可用架构,让你的堡垒机系统具备企业级的稳定性和扩展性。 ## 为什么选择MySQL后端实现高可用? 在企业级应用中,单点故障是系统稳定性的最大威胁。传统的sshportal默认配置可能采用本地数

gitblog_00939的博客 781

关于MySQL的几个小知识

了解型知识点 数据库发展史 数据库由来 基于我们之前所学,数据要想永久保存,都是保存于文件中。 使用文件存储数据存在的几个问题: 数据共享问题(数据安全问题) 毫无疑问,一个文件仅仅只能存在于某一台机器上。PS:(拷贝文件可以实现存在于多台机器,但是无法实现数据同时修改) I/O操作效率问题 打开文件读取数据、写入数据关闭文件都数据I/O操作,会大大影响我们程序的执行效率 数据库的诞生就...

Catalog_Spri的博客 1277

详解基于共享存储(SAN)的MySQL高可用方案

高可用架构对于互联网服务基本是标配,无论是应用服务还是数据库服务都需要做到高可用。虽然互联网服务号称7*24小时不间断服务,但多多少少有一些时候服务不可用,比如某些时候网页打不开,百度不能搜索或者无法发微博,发微信等。 目前还没有一家公司完全能够做到7*24小时不间断服务的,包括百度、腾讯、阿里等。在国外也有很多类似的停机事故,比...

weixin_33843947的博客 3195

mysql 实现session共享_spring-session用mysql实现session共享实践

前段时间,写了篇文章,介绍了spring-session使用redis存储实现session共享的内部机制,遇到很多人提问到jdbc的实现,索性就实践一下。1.spring-session实现了使用不同存储介质保存共享的session的apispring-session实现session共享的实现有三种:jdbc:使用数据库做介质,支持多种数据,如oracle,sqlserver,mysql等,对...

weixin_39880318的博客 188

MySQL之可扩展性(七)

理想的扩展方案时单一逻辑数据库能够存储尽可能多的数据,处理尽可能多的查询,并如期望的那样增长。许多人的第一想法就是建立一个"集群"或者"网格"来无缝处理这些事情,这样应用就无须去做太多工作,也不需要知道数据到底存在哪台服务器上。随者云计算的流行,自动扩展——根据负载或数据大小变化动态地在集群中增加/移除服务器——变得越来越有趣。网上出现了许多被称为NoSQL的技术。许多NoSQL的支持者发表了一些奇怪且未经证实的观点,例如"关系型模型无法进行扩展",或者"SQL无法扩展"。

Cover_sky的博客 1099
上一篇: mysql随机查询若干条数据
下一篇: glib中hash table
笑天居士
博客等级 码龄24年 292粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值