怎样连接局域网中的mysql数据库(mysql局域网访问)

怎样连接局域网中的mysql数据库(mysql局域网访问),第1张

1首先要确保内网应用正常。

2明确内网mysql数据库访问地址,并确保mysql数据库服务正常。如本地mysql数据库访问地址是localhost:3306。

3然后使用自己的帐号登录nat123。然后选择主面板/端口映射列表/添加映射。

4设置映射信息。选择全端口映射类型。填写内网mysql数据库服务器IP地址,和外网访问的域名。可以使用自己的域名,也可以使用免费二级域名。将鼠标放在输入框有向导提示。

5访问者打开mysql全端口映射后的域名和访问端口。如在添加访问地址时,同时勾选允许局域网访问,则在访问者局域网内都可以访问。

6查看访问者状态。鼠标放在访问者图标上,提示当前状态信息。

7在使用访问者本机,可以进行访问mysql数据库。访问地址是本地访问者打开的域名端口

一:MySQL数据类型

MySQL中定义数据字段的类型对你数据库的优化是非常重要的

MySQL支持多种数据类型,大致可以分为三类:数值 日期/时间和字符串

二、数值类型

 1整数类型

2浮点数

如果希望保证值比较准确,推荐使用定点数数据类型。MySql中的浮点类型有float,double和real。他们定义方式为:FLOAT(M,D) 、 REAL(M,D) 、 DOUBLE PRECISION(M,D)。

FLOAT和DOUBLE中的M和D的取值默认都为0,即除了最大最小值,不限制位数。允许的值理论上是-17976931348623157E+308~-22250738585072014E-308、0和22250738585072014E-308~17976931348623157E+308。M、D范围如下:

(MySql57实测,与IEEE标准计算的实际是不同的,下面介绍):M取值范围为0~255。FLOAT只保证6位有效数字的准确性,所以FLOAT(M,D)中,M<=6时,数字通常是准确的。如果M和D都有明确定义,其超出范围后的处理同decimal。

D取值范围为0~30,同时必须<=M。double只保证16位有效数字的准确性,所以DOUBLE(M,D)中,M<=16时,数字通常是准确的。如果M和D都有明确定义,其超出范围后的处理同decimal。

CHAR值时,在它们的右边填充空格以达到指定的长度。当检索到CHAR值时,尾部的空格被删除掉,所以,我们在存储时字符串右边不能有空格,即使有,查询出来后也会被删除。在存储或检索过程中不进行大小写转换。

三、时间日期类型(5)

该“0”值如下:

四、各种类型占用的存储

1数值类型

 

定点数的比较特殊,而且与具体版本也有关系,此处单独解释:

使用二进制格式将9个十进制(基于10)数压缩为4个字节来表示DECIMAL列值。每个值的整数和分数部分的存储分别确定。每个9位数的倍数需要4个字节,并且“剩余的”位需要4个字节的一部分。下表给出了超出位数的存储需求:

2时间日期

从版本564开始,存储需求就有所改变,根据精度而定。不确定部分需要的存储如下:

比如,TIME(0), TIME(2), TIME(4), 和TIME(6) 分别使用3, 4, 5, 6 bytes。 

3字符串

4类型的选择

为了优化存储,在任何情况下均应使用最精确的类型。

例如,如果列的值的范围为从1到99999,若使用整数,则MEDIUMINT UNSIGNED是好的类型。在所有可以表示该列值的类型中,该类型使用的存储最少。

用精度为65位十进制数(基于10)对DECIMAL 列进行所有基本计算(+、-、、/)。

使用双精度 *** 作对DECIMAL值进行计算。如果准确度不是太重要或如果速度为最高优先级,DOUBLE类型即足够了。为了达到高精度,可以转换到保存在BIGINT中的定点类型。这样可以用64位整数进行所有计算,根据需要将结果转换回浮点值。

5使用其他数据库的SQL语句

为了使用为其它数据库编写的SQL执行代码,MySQL按照下表所示对列类型进行映射。通过这些映射,可以很容易地从其它数据库引擎将表定义导入到MySQL中:

您好,MySQL分库分表后,Java读写的方式主要有以下几种:

1 使用JDBC连接池:可以使用JDBC连接池来连接MySQL数据库,然后使用JDBC API进行数据 *** 作,这是最常见的读写方式。

2 使用MyBatis:MyBatis是一个开源的持久层框架,可以帮助我们快速构建数据访问层,它可以自动映射数据库表和实体类,可以更加方便地实现MySQL的读写 *** 作。

3 使用Hibernate:Hibernate是一个开源的对象关系映射框架,可以帮助我们实现MySQL的读写 *** 作,它可以自动映射数据库表和实体类,可以更加方便地实现MySQL的读写 *** 作。

4 使用JPA:JPA是Java Persistence API的简称,是一个Java持久化规范,可以帮助我们实现MySQL的读写 *** 作,它可以自动映射数据库表和实体类,可以更加方便地实现MySQL的读写 *** 作。

总之,MySQL分库分表后,Java可以使用JDBC连接池、MyBatis、Hibernate和JPA等方式来实现读写 *** 作。

根据用户定义的枚举值与分片节点映射文件,直接定位目标分片。

用户在rulexml中配置枚举值文件路径和分片索引是字符串还是数字,DBLE在启动时会将枚举值文件加载到内存中,形成一个映射表

在DBLE的运行过程中,用户访问使用这个算法的表时,WHERE子句中的分片索引值会被提取出来,直接查映射表得到分片编号

与MyCat的类似分片算法对比

中间件

DBLE

MyCat

分片算法种类    enum 分区算法    分片枚举  

两种中间件的枚举分片算法使用上无差别。

开发注意点

分片索引1 整型数字(可以为负数)或字符串((不含=和换行符)

分片索引2 枚举值之间不能重复

Male=0Male=1

或者

123=1123=2

会导致分片策略加载出错

分片索引3 不同枚举值可以映射到同一个分片上

Mr=0Mrs=1Miss=1Ms=1123=0

运维注意点

扩容1 增加枚举值无需数据再平衡

扩容2 增加一个枚举值的分片数量数时,需要对局部数据进行迁移

缩容1 减少枚举值需要数据再平衡

缩容2 减少一个枚举值的分片数量数时,需要对局部数据进行迁移

配置注意点

配置项1 在 rulexml 中,可配置项为 <property name="defaultNode"> 、<property name="mapFile"> 和 <property name="type">

配置项2 在 rulexml 中配置 <property name="defaultNode"> 标签,非必须配置项,不配置该项的话,用户的分片索引值没落在 mapFile 定义的范围时,DBLE 会报错;若需要配置,必须为非负整数,用户的分片索引值没落在 mapFile 定义的范围时,DBLE 会路由至这个值的 MySQL 分片

配置项3 在 rulexml 中配置 <property name="mapFile"> 标签,范围映射文件的路径:若在映射文件在 DBLE_HOME/conf 或其中,则可以使用相对路径的形式配置,例如,映射文件是 DBLE_HOME/conf/map/table_maptxt 时,配置值就可以简写为 map/table_maptxt;映射文件在 DBLE_HOME/conf 目录以外时,需要使用绝对路径,但这种做法需要考虑用户权限等问题,因此不建议把映射文件放在 DBLE_HOME/conf 外。

配置项4 编辑 mapFile 所配置的文件

记录格式为:<枚举值>=<分片编号>

枚举值可以是整型数字,或任意字符(除了=和换行符),分片编号必须是非负整型数字,记录之间以换行分隔,一行仅能有一条记录,枚举值不能够是“DEFAULT_NODE”这个字符串,允许以“//”和“#”在行首来注释该行

配置项5 在 rulexml 中配置 <property name="type"> 标签;type 必须为整型;取值为 0 时,mapFile 的<枚举值>必须为整型;取值为非 0 时,mapFile 的<枚举值>可以是任意字符(除了=和换行符)

当分片索引不是纯整型的字符串时,只接受整型的内置 hash 算法是无法使用的。为此,stringhash 按照用户定义的起点和终点去截取分片索引字段中的部分字符,根据当中每个字符的二进制 unicode 值换算出一个长整型数值,然后就直接调用内置 hash 算法求解分片路由:先求模得到逻辑分片号,再根据逻辑分片号直接映射到物理分片。

用户需要在 rulexml 中定义 partitionLength[] 和 partitionCount[] 两个数组和 hashSlice 二元组。

在 DBLE 的启动阶段,点乘两个数组得到模数,也是逻辑分片的数量

并且根据两个数组的叉乘,得到各个逻辑分片到物理分片的映射表(物理分片数量由 partitionCount[] 数组的元素值之和)

此外根据 hashSlice 二元组,约定把分片索引值中的第 4 字符到第 5 字符(字符串以 0 开始编号,编号 3 到编号 4 等于第 4 字符到第 5 字符)字符串用于 “字符串->整型”的转换

在 DBLE 的运行过程中,用户访问使用这个算法的表时,WHERE 子句中的分片索引值会被提取出来,取当中的第 4 个字符到第 5 字符,送入下一步

设置一个初始值为 0 的累计值,逐个取字符,把累计值乘以 31,再把这个字符的 unicode 值当成长整型加入到累计值中,如此类推直至处理完截取出来的所有字符,此时的累计值就能够代表用户的分片索引值,完成了 “字符串->整型” 的转换

对上一步的累计值进行求模,得到逻辑分片号

再根据逻辑分片号,查映射表,直接得到物理分片号

与MyCat的类似分片算法对比

两种算法在string转化为int之后,和 hash 分区算法相同,区别也继承了 hash 算法的区别。

开发注意点

分片索引1 必须是字符串

分片索引2 最大物理分片配置方法是,让 partitionCount[] 数组和等于 2880

例如:

<property name="partitionLength">1</property><property name="partitionCount">2880</property>

<property name="partitionLength">1,1</property><property name="partitionCount">1440,1440</property>

分片索引3 最小物理分片配置方法是,让 partitionCount[] 数组和等于 1

例如

<property name="partitionLength">2880</property><property name="partitionCount">1</property>

分片索引4 partitionLength 和 partitionCount 被当做两个逗号分隔的一维数组,它们之间的点乘必须在 [1, 2880] 范围内

分片索引5 partitionLength 和 partitionCount 的配置对顺序敏感

<property name="partitionLength">512,256</property><property name="partitionCount">1,2</property>

<property name="partitionLength">256,512</property><property name="partitionCount">2,1</property>

是不同的分片结果

分片索引6 分片索引字段长度小于用户指定的截取长度时,截取长度会安全减少到符合分片索引字段长度

数据分布1 分片索引字段截取越长则越有利于数据均匀分布

数据分布2 分片索引字段的内容重复率越低则越有利于数据均匀分布

运维注意点

扩容1 预先过量分片,并且不改变 partitionCount 和 partitionLength 点乘结果,也不改变截取设置 hashSlice 时,可以避免数据再平衡,只需进行涉及数据的迁移

扩容2 若需要改变 partitionCount 和 partitionLength 点乘结果或改变截取设置 hashSlice 时,需要数据再平衡

缩容1 预先过量分片,并且不改变 partitionCount 和 partitionLength 点乘结果,也不改变截取设置 hashSlice 时,可以避免数据再平衡,只需进行涉及数据的迁移

缩容2 若需要改变 partitionCount 和 partitionLength 点乘结果或改变截取设置 hashSlice 时,需要数据再平衡

配置注意点

配置项1 在 rulexml 中,可配置项为 <property name="partitionLength">  、<property name="partitionCount"> 和 <property name="hashSlice">

配置项2在 rulexml 中配置 <property name="partitionLength"> 标签

内容形式为:<物理分片持有的虚拟分片数>[,<物理分片持有的虚拟分片数>,<物理分片持有的虚拟分片数>]

物理分片持有的虚拟分片数必须是整型,物理分片持有的虚拟分片数从左到右与同顺序的物理分片数对应,partitionLength 和partitionCount 的点乘结果必须在 [1, 2880] 范围内

配置项3 在 rulexml 中配置 <property name="partitionCount"> 标签内容形式为:<物理分片数>[,<物理分片数>,<物理分片数>]

其中物理分片数必须是整型,物理分片数按从左到右的顺序与同顺序的物理分片持有的虚拟分片数对应,物理分片的编号从左到右连续递进,partitionLength 和 partitionCount 的点乘结果必须在 [1, 2880] 范围内

配置项4 partitionLength 和 partitionCount 的语义是:持有partitionLength[i] 个虚拟分片的物理分片有 partitionCount[i] 个

例如

<property name="partitionLength">512,256</property><property name="partitionCount">1,2</property>

语义是持有 512 个逻辑分片的物理分片有 1 个,紧随其后,持有 256 个逻辑分片的物理分片有 2 个

配置项5partitionLength 和 partitionCount 都对书写顺序敏感,

例如

<property name="partitionLength">512,256</property><property name="partitionCount">1,2</property>

分片结果是第一个物理分片持有头512个逻辑分片,第二个物理分片持有紧接着的256个逻辑分片,第三个物理分片持有最后256个逻辑分片,相对的

<property name="partitionLength">256,512</property><property name="partitionCount">2,1</property>

分片结果则是第一个物理分片持有头 256 个逻辑分片,第二个物理分片持有紧接着的 256 个逻辑分片,第三个物理分片持有最后 512 个逻辑分片

配置项6partitionLength[] 的元素全部为 1 时,这时候partitionCount 数组和等于 partitionLength 和 partitionCount 的点乘,物理分片和逻辑分片就会一一对应,该分片算法等效于直接取余

配置项7在 rulexml 中配置标签,从分片索引字段的第几个字符开始截取到第几个字符:

若希望从首字符开始截取 k 个字符( k 为正整数),配置的内容形式可以为“ 0 : k ”、“ k ”或“ : k ”;

若希望从末字符开始截取 k 个字符( k 为正整数),则配置的内容形式可以为“ -k : 0 ”、“ -k ”或“ -k : ”;

若希望从头第 m 个字符起算截取 n 个字符( m 和 n 都是正整数),则先计算出 i = m - 1 和 j = i + n - 1,配置的内容形式为“ i : j ”;

若希望从尾第 m 个字符起算截取从尾算起的 n 个字符( m 和 n 都是正整数),则先计算出 i = -m + n - 1,配置的内容形式可以为“ -m : i ”;

若希望不截取,则配置的内容形式可以为“ 0 : 0 ”、“ 0 : ”、“ : 0 ”或 “ : ”

说一下几种思路:

一、如果你的表名是有规律的,就用循环组合成sql,再执行。如:

declare @i int,@sql varchar(1000)

set @i=1

while @i<10

begin

set @sql='select count() from table'+convert(varchar,@i)

exec @sql

end

二、把表名从系统表里取出,来组成sql

select ''select count() from '+name from sysobjects where xtype='u'

再把sql取出来执行既可。

三、如果你有兴趣研究,还可以使用微软未公开的存储过程来处理 sp_MSforeachtable。这个就不详写了。

以上就是关于怎样连接局域网中的mysql数据库(mysql局域网访问)全部的内容,包括:怎样连接局域网中的mysql数据库(mysql局域网访问)、mysql中常见的数据类型、musql分库分表后java如何读写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10195859.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存