博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysql 数据库水平分表 存储过程
阅读量:6718 次
发布时间:2019-06-25

本文共 683 字,大约阅读时间需要 2 分钟。

数据库存储量达到一定程度的时候,就需要进行分表以减轻检索的消耗。

常用的分表方式包括水平和垂直分表。本次进行的是按照uid进行水平分表。

##分表思路: 水平分表平均的将数据按照特定方式分配到多个表中。理论上每个表的访问频次和数据量都是同一水平的。

水平分表有很多种划分方式。在这里使用的是最简单的一种:按照id求余进行划分。

比如现在要将table分成100张表,需要创建一百张新表table_1,table_2等。然后根据uid%100的余数,来分配到对应的表中。

在程序中调用,也只需要按照同样的规则对uid求余,然后利用字符串拼接自动生成对应的表名,查询不同的表即可。

##代码实现:

虽然是第一次写存储过程,但是确实十分简单:

CREATE DEFINER=`root`@`localhost` PROCEDURE `divide_table_by_mod`(tableName varchar(64), target int)BEGINdeclare ntname varchar(64);declare i int;set i=0;while (i

##遇到问题:

  • 字符串链接: 在mysql的存储过程中,字符串拼接需要使用concat函数,这个函数可以接收多个输入最终拼接成一个字符串。
  • 动态sql 动态的sql不能直接将变量写到sql里面来执行。需要先拼接一个sql,然后
prepare dcsql from @createSql;    execute dcsql;    deallocate prepare dcsql;复制代码

如此这般。

转载地址:http://rnumo.baihongyu.com/

你可能感兴趣的文章
翻译连载 | 第 10 章:异步的函数式(上)-《JavaScript轻量级函数式编程》 |《你不知道的JS》姊妹篇...
查看>>
Android webview 与 js(Vue) 交互
查看>>
UML统一建模语言
查看>>
给迷茫的JAVA员一些中肯建议, 你还在虚度光阴吗?
查看>>
计算机程序的思维逻辑 (40) - 剖析HashMap
查看>>
【腾讯 TMQ】从 0 到 1:打造移动端 H5 性能测试平台
查看>>
我是HDRoot!
查看>>
Postgres On Docker-窥探容器服务
查看>>
性能优化工具知识梳理(2) Systrace
查看>>
JS中的洋葱模型
查看>>
js call、apply、bind的实现
查看>>
《程序员的职业素养之代码整洁之道》成为专业人士必读
查看>>
使用IntelliJ Idea新建SpringBoot项目
查看>>
聊聊flink的Table API及SQL Programs
查看>>
Android M 封装过的运行时权限处理
查看>>
架构的演进,阿里资深Java工程师表述架构的腐化之谜
查看>>
DDGScreenShot —iOS 图片处理--多图片拼接 (swift)
查看>>
flutter 带未读消息的底部导航
查看>>
Protobuf 语言指南(proto3)
查看>>
你的目标,不要只是说说而已
查看>>