问个数据库分表的问题
数据分表的时候,一般都是按照顺序分表的,比如表1,表2,表3这样的比如我的主表后面增加的了一些数据。到表10了。
但是我把数据后面的数据轮流在表1,表2,表3分表增加的
这样后增加的数据,时间上和前面的表1,表2不连贯了
有影响吗,会影响运行吗 没有影响。影响的是那么多分表,联合表查询的时候,如果主机性能不行会有卡顿 分表不是这样分的吧,一般不是将字段分出去吗
匿名者 发表于 2022-5-13 10:29
没有影响。影响的是那么多分表,联合表查询的时候,如果主机性能不行会有卡顿
好的,谢谢了。 talaon 发表于 2022-5-13 11:21
分表不是这样分的吧,一般不是将字段分出去吗
比如前面的表分的小了,后面给他加大点呀。 大多数不需要分表,
真的没必要。要在业务和架构上来做。
关于大数据分表我的操作方法:
1.按常规操作,创建表数据库,不创建自增编号字段,但数据表引擎要设置为:MRG_MYISAM存储引擎,目的是将它的分表聚合起来,这个表只是用来做聚合的,不做数据存储,假设表命名为:users
2.按常规操作,创建表数据,不创建自增编号字段,同聚合表结构一样,只是数据表依次命名为:users_0、users_1、users_2…………users_9,
3.再创建一个userscreateid表,用于存储自增编号的,fields:id\bigint(20)
4.在Insert、Update、Delete时,通过userscreateid反回的autoid,然后将autoid mod 10,这样通过mod出来的值就是属于哪个表,autoid就是这个表对应的id值
5.在Select操作时,只需要操作表users即可
6.大量数据下,索引创建非常,随意创建的聚合索引会影响性能,能通过id检索的就尽量用id检索,文本检索建议使用第三方搜索,数据库只是用来做数据存储的,尽量减少数据库的计算,只让他发挥存储数据的作用,如果非要做文本检索 ,我经常使用Lucene.Net+jieba分词
以上只是个人操作意见 这个需要根据你的分表逻辑来定的,
比如说你的分表逻辑是自增长id区间分成表1,表2,表3这样的,到表10了,
这时候如果你把新增数据轮流在表1,表2,表3分表增加,已经违反分表逻辑了,如果使用了MYSQL的中间件,则这个时候SELECT/UPDATE/DELETE都会出现失败,因为中间件会按分表逻辑到对应的表里去查找数据。
leexiaochong 发表于 2022-5-15 10:25
关于大数据分表我的操作方法:
1.按常规操作,创建表数据库,不创建自增编号字段,但数据表引擎要设置为: ...
我这个就是dz,在后台直接分表的
也不知道是不是你说的这种分表方法。
页:
[1]