MyCat配置文件详解(二),Java码农是如何进入腾讯的

  1. name
    指定逻辑库的库名 , 可以自己定义任何字符串 ;
  2. checkSQLschema
    取值为 true / false ;
    如果设置为true时 , 如果我们执行的语句为 "select * from ITCAST.TB_TEST;" , 则
    MyCat会自动把schema字符去掉, 把SQL语句修改为 "select * from TB_TEST;" 可以避免SQL发送到后端数据库执行时, 报table不存在的异常 。
    不过当我们在编写SQL语句时, 指定了一个不存在schema, MyCat是不会帮我们自动去除的 ,这个时候数据库就会报错, 所以在编写SQL语句时,最好不要加逻辑库的库名, 直接查询表即可。
  3. sqlMaxLimit
    当该属性设置为某个数值时,每次执行的SQL语句如果没有加上limit语句, MyCat也会自动在limit语句后面加上对应的数值 。也就是说, 如果设置了该值为100,则执行 select * from TB_TESTselect * from TB_TEST limit 100 是相同的效果 。
    所以在正常的使用中, 建立设置该值 , 这样就可以避免每次有过多的数据返回。

2.子标签table

table 标签 定义了MyCat中逻辑库schema下的逻辑表 , 所有需要拆分的表都需要在table标签中定义 。

属性如下 :
MyCat配置文件详解(二),Java码农是如何进入腾讯的_第1张图片

  1. name
    定义逻辑表的表名 , 在该逻辑库下必须唯一。

  2. dataNode
    定义的逻辑表所属的dataNode , 该属性需要与dataNode标签中的name属性的值对应。 如果一张表拆分的数据,存储在多个数据节点上,多个节点的名称使用","分隔 。
    MyCat配置文件详解(二),Java码农是如何进入腾讯的_第2张图片

  3. rule
    该属性用于指定逻辑表的分片规则的名字, 规则的名字是在rule.xml文件中定义的, 必须与tableRule标签name属性对应。
    MyCat配置文件详解(二),Java码农是如何进入腾讯的_第3张图片

  4. ruleRequired
    该属性用于指定表是否绑定分片规则, 如果配置为true, 但是没有具体的rule, 程序会报错。

  5. primaryKey
    逻辑表对应真实表的主键
    如: 分片规则是使用主键进行分片, 使用主键进行查询时, 就会发送查询语句到配置的所有的datanode上; 如果使用该属性配置真实表的主键,

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

那么MyCat会缓存主键与具体datanode的信息,再次使用主键查询就不会进行广播式查询了, 而是直接将SQL发送给具体的datanode
6. type
该属性定义了逻辑表的类型,目前逻辑表只有全局表普通表
全局表:type的值是 global , 代表 全局表
普通表:无
7. autoIncrement
mysql对非自增长主键,使用last_insert_id() 是不会返回结果的,只会返回0。所以,只有定义了自增长主键的表,才可以用last_insert_id()返回主键值。 mycat提供了自增长主键功能,但是对应的mysql节点上数据表,没有auto_increment,那么在mycat层调用last_insert_id()也是不会返回结果的。
如果使用这个功能, 则最好配合数据库模式的全局序列。使用 autoIncrement="true" 指定该表使用自增长主键,这样MyCat才不会抛出 “分片键找不到” 的异常。 autoIncrement 的默认值为false。
8. needAddLimit
指定表是否需要自动在每个语句的后面加上limit限制, 默认为true


参考资料:《开源数据库中间件MyCat实战笔记》
快速入手通道:发送简信“MyCat资料”免费获取

二、dataNode 标签

dataNode标签中定义了MyCat中的数据节点, 也就是我们通常说的数据分片。一个dataNode标签就是一个独立的数据分片

具体的属性 :

属性 含义 描述
name 数据节点的名称 需要唯一 ; 在table标签中会引用这个名字, 标识表与分片的对应关系
dataHost 数据库实例主机名称 引用自 dataHost 标签中name属性
database 定义分片所属的数据库

三、dataHost 标签


select user()

该标签在MyCat逻辑库中作为底层标签存在, 直接定义了具体的数据库实例读写分离心跳语句

1.属性

属性 含义 描述
name 数据节点名称 唯一标识, 供上层标签使用
maxCon 最大连接数 内部的writeHost、readHost都会使用这个属性
minCon 最小连接数 内部的writeHost、readHost初始化连接池的大小
balance 负载均衡类型 取值0,1,2,3 ; 后面章节会详细介绍;
writeType 写操作分发方式 0 : 写操作都转发到第1台writeHost, writeHost1挂了, 会切换到writeHost2上;1 : 所有的写操作都随机地发送到配置的writeHost上 ;
dbType 后端数据库类型 mysql, mongodb , oracle
dbDriver 数据库驱动 指定连接后端数据库的驱动,目前可选值有 native和JDBC。native执行的是二进制的MySQL协议,可以使用MySQL和MariaDB。其他类型数据库需要使用JDBC(需要在MyCat/lib目录下加入驱动jar)
switchType 数据库切换策略 取值 -1,1,2,3 ; 后面章节会详细介绍;

2.子标签heartbeat

JDBC(需要在MyCat/lib目录下加入驱动jar)
| switchType | 数据库切换策略 |取值 -1,1,2,3 ; 后面章节会详细介绍;

2.子标签heartbeat

你可能感兴趣的:(程序员,面试,java,后端)