• [技术干货] mysql RTREE
    RTREE在MySQL很少使用,仅支持geometry数据类型,支持该类型的存储引擎只有MyISAM、BDb、InnoDb、NDb、Archive几种。相对于BTREE,RTREE的优势在于范围查找。
  • [技术干货] mysql
    BTREE索引就是一种将索引值按一定的算法,存入一个树形的数据结构中(二叉树),每次查询都是从树的入口root开始,依次遍历node,获取leaf。这是MySQL里默认和最常用的索引类型。
  • [技术干货] mysql HASH索引
    由于HASH的唯一(几乎100%的唯一)及类似键值对的形式,很适合作为索引。HASH索引可以一次定位,不需要像树形索引那样逐层查找,因此具有极高的效率。但是,这种高效是有条件的,即只在“=”和“in”条件下高效,对于范围查询、排序及组合索引仍然效率不高。
  • [技术干货] mysql FULLTEXT
    即为全文索引,目前只有MyISAM引擎支持。其可以在CREATE TABLE ,ALTER TABLE ,CREATE INDEX 使用,不过目前只有 CHAR、VARCHAR ,TEXT 列上可以创建全文索引。全文索引并不是和MyISAM一起诞生的,它的出现是为了解决WHERE name LIKE “%word%"这类针对文本的模糊查询效率较低的问题。
  • [技术干货] mysql的索引
    Mysql目前主要有以下几种索引类型:FULLTEXT,HASH,BTREE,RTREE。
  • [问题求助] 【ROMA】【FDI中MQS到MYSQL数据源】一直插入空数据
    拓维信息,清远项目,大租户:Hi-zhyqtalkweb02,Hi-zhyqtalkweb02__无人车应用【功能模块】【ROMA】【FDI中MQS到MYSQL数据源】【操作步骤&问题现象】1、livedata函数发送消息到MQS,json格式是:任务配置截图:映射截图:执行结果截图:数据库截图:以上测试,经过,多次测试,包括,DATA集合里面只有1个{}, 3个{},不管是 1个还是3个,每次都是空数据,甚至还去掉图一JSON中前面的msg和code,截止到目前,唯一一次插入成功的,就是最简单的一个json   {'AreaName':'华为','Status':'Avaliable','Id':'20210428','Name':'qingy'} ,这样子才成功,但是不满足需求, 之所以MQS解析,配置data.list[i],是看到   图片示例。【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [技术干货] mysql 基本操作
    控制端进入数据库mysql -uroot -p展示数据库结构表show databases;如何在数据库服务器中创建数据库create database test1;use tes1创建表CREATE TABLE pet(name VARCHAR(20),owner VARCHAR(20),species VARCHAR(20),sex char(1),birth date,death date);查看创建好的数据表的结构DESCRIBE pet;[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L62E5i3B-1620951735831)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210426132807664.png)]如何查看表中的记录SELECT *FROM pet;往数据表中添加记录INSERT into petVALUES(‘dog’,‘mike’,‘hamseter’,‘f’,‘1999-2-20’,NULL)mysql常用数据有哪些数值日期/时间字符串数据类型怎么选择日期按照格式数值和字符串按照大小删除数据DELETE FROM pet WHERE name=‘Slim’修改数据库UPDATE pet set name =‘旺旺财’ WHERE owner =‘周星驰’修改数据库UPDATE pet set name =‘旺旺财’ WHERE owner =‘周星驰’
  • [交流分享] 云数据库rds for mysql三种链接方式
    方式一:通过数据管理服务(Data Admin Service,简称DAS)DAS连接MySQL实例1、点击mysql实例后的登录按钮2、输入mysql的root用户和密码3、DAS登录的界面如下: 方式二、在ECS上安装客户端通过内网连接MySQL实例1、购买弹性云服务器(注意云主机的VPC和安全组与RDS实例保持一致,如果不一致需要修改各自的安全组规则)2、在弹性云服务器上安装mysql数据库的客户端yum install mysql  -y3、找到mysql实例的内网地址4、在ECS上通过内网地址登录mysql实例说明:ECS与RDS实例在相同安全组时,默认ECS与RDS实例互通,无需设置安全组规则,可以在ECS上ping RDS内网地址进行验证;ECS与RDS实例在不同安全组时,需要为RDS和ECS分别设置安全组规则。方式三、通过公网(绑定弹性ip)连接 MySQL实例购买弹性公网ip返回数据库实例详情页面,在左侧导航栏,单击“连接管理”->“公网连接”->“连接信息”模块中“弹性公网IP”处单击“绑定”->“确定”。修改VPC的安全放通数据库3306端口返回控制台,在服务列表中,选择“网络 -> 虚拟私有云 VPC ->访问控制 -> 安全组”,点击以用户名命名的安全组名称,进入安全组添加“入方向规则”->“添加规则”添加端口号为3306的入方向规则(或选择一键放通,实际业务场景不推荐)。验证通过弹性公网ip是否能登录:
  • [技术干货] mysql 模糊查询效率优化
    在使用msyql进行模糊查询的时候,很自然的会用到like语句,通常情况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百万级,千万级的时候,查询的效率就很容易显现出来。这个时候查询的效率就显得很重要!一般情况下like模糊查询的写法为(field已建立索引):SELECT `column` FROM `table` WHERE `field` like '%keyword%';上面的语句用explain解释来看,SQL语句并未用到索引,而且是全表搜索,如果在数据量超大的时候,可想而知最后的效率会是怎样的对比下面的写法:SELECT `column` FROM `table` WHERE `field` like 'keyword%';这样的写法用explain解释看到,SQL语句使用了索引,搜索的效率大大的提高了!我们在做模糊查询的时候,并非要想查询的关键词都在开头,所以如果不是特别的要求,"keywork%"并不合适所有的模糊查询这个时候,我们可以考虑用其他的方法新增一列,存储该字段的反转。比如原字段是abcd,取反存储为dcba,查询%bcd改成查dcb%。这样就可以用到索引了,搜索效率大大提高。但相对的数据存储内容要增加,只能算是个折中方案,可以根据情况来决定是否使用。当然,MYSQL还有很多内置函数,我们可以把这些函数利用起来来解决问题LOCATE(substr,str)返回字符串substr中第一次出现子字符串的位置 str。然后我们可以这样写SELECT `column` FROM `table` WHERE LOCATE('keyword', `field`)>0这样就可以把包含keyword的数据查询出来了当然类似的函数还有很多,比如POSITION('substr' IN `field`) 、INSTR(`str`,'substr')、FIND_IN_SET等有时候换个思路,你会发现问题会很轻松的解决。
  • [问题求助] 【中东G42】【FDI创建任务时选择mysql数据源报错】
    【功能模块】FDI创建任务【操作步骤&问题现象】1、创建mysql数据源完成2、创建任务,选择源端数据库和表,报错:调用adapter后台接口dbmetadata/listcolumns失败,请联系管理员! 错误信息:List Table Column Error: RDB Reader: Failed to getmeta task【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • 我的mysql数据库有点毛病
    我MySQL数据库突然报了个错了,表是存在的啊
  • [数据库] 【第23课】MySQL数据库如何实现跨区域备份
    云数据库MySQL支持将某一区域的实例备份文件复制到异地区域存储,该区域的实例故障后,可以在异地区域使用备份文件在异地恢复到新的MySQL实例,用来恢复业务。实例开启跨区域备份策略后,会自动将该实例的备份文件备份到目标区域。您可以在RDS“备份管理”页面,对跨区域的备份文件进行管理。开启或修改跨区域备份策略1.  登录管理控制台。2.  单击管理控制台左上角的,选择区域和项目。3.  在页面左上角单击,选择“数据库> 云数据库 RDS”。进入云数据库 RDS信息页面。4.  在“实例管理”页面,选择指定的MySQL实例,单击实例名称。5.  在左侧导航栏,单击“备份恢复”,单击“设置跨区域备份策略”。如下图所示进行修改备份策略。      图1 修改跨区域备份策略    开启跨区域全备:将本实例的自动全量备份文件备份到异地。开启跨区域日志备份:将本实例的Binlog备份(增量备份)文件备份到异地。跨区域备份文件的保留天数范围为1~1825天。开启跨区域日志备份后需要待下一次自动全量备份复制完成后才可进行将数据库实例恢复到指定时间点操作,并且只允许恢复到自动全量备份完成后的时间点。目前,一个租户下,单个区域最多支持50个数据库实例开启跨区域备份。单击“确定”,确认修改。6.  您可以在“备份管理”页面的“数据库跨区域备份”页签,管理跨区域备份文件。         图2 数据库跨区域备份      单击“设置区域备份”,可以修改跨区域备份策略。单击“查看跨区域备份”,可以查看到生成的备份文件,当原区域实例发生故障,可以通过该备份文件将数据恢复到新实例。            图3 全量备份                         图4 Binlog备份           关闭跨区域备份策略1.  登录管理控制台。2.  单击管理控制台左上角的,选择区域和项目。3.  在页面左上角单击,选择“数据库> 云数据库 RDS”。进入云数据库 RDS信息页面。4.  在“备份管理”页面,选择“数据库跨区域备份”。5.  在目标实例上,单击“设置区域备份”。在弹出页面,通过设置开关,关闭跨区域备份策略。      图5 关闭跨区域备份策略    6.  单击“确定”,确认关闭。更多详细内容,请单击这里。
  • [技术干货] mysql脚本启动pid文件参数位置
    pid-file=file_name The path name of the file in which the server should write its process ID. The server creates the file in the data directory unless an absolute path name is given to specify a different directory. If this option is not given, mysql.server uses a default value of host_name.pid. The PID file value passed to mysqld_safe overrides any value specified in the [mysqld_safe] option file group. Because mysql.server reads the [mysqld] option file group but not the [mysqld_safe] group, you can ensure that mysqld_safe gets the same value when invoked from mysql.server as when invoked manually by putting the same pid-file setting in both the [mysqld_safe] and [mysqld] groups. //4.3.3 mysql.server — MySQL Server Startup Script https://dev.mysql.com/doc/refman/5.7/en/mysql-server.html [mysqld] port=3333 datadir=/3333/data socket=/3333/mysql.sock [mysqld_safe] log-error=/3333/log/db.log pid-file=/3333/run/db.pid 手动启动: ./bin/mysqld_safe --defaults-file=/3333/my.cnf & pid读取mysqld_safe参数文件: ps -ef|grep 3333 root 25278 12625 0 23:10 pts/1 00:00:00 /bin/sh ./bin/mysqld_safe --defaults-file=/3333/my.cnf mysql 25409 25278 1 23:10 pts/1 00:00:00 /mysql/3333/bin/mysqld --defaults-file=/3333/my.cnf --basedir=/mysql/3333 --datadir=/3333/data --plugin-dir=/mysql/3333/lib/plugin --user=mysql --log-error=/3333/log/db.log --pid-file=/3333/run/db.pid --socket=/3333/mysql.sock --port=3333 使用mysql.server脚本启动 uses a default value of host_name.pid,The server creates the file in the data directory 。 ###pid参数文件默认指定位置,为数据文件目录,主机名称命名。 [root@VM-16-10-centos 3333]# ps -ef|grep 3333 root 26111 1 0 23:13 pts/1 00:00:00 /bin/sh /mysql/3333/bin/mysqld_safe --datadir=/3333/data --pid-file=/3333/data/VM-16-10-centos.pid mysql 26269 26111 0 23:13 pts/1 00:00:00 /mysql/3333/bin/mysqld --basedir=/mysql/3333 --datadir=/3333/data --plugin-dir=/mysql/3333/lib/plugin --user=mysql --log-error=/3333/log/db.log --pid-file=/3333/data/VM-16-10-centos.pid --socket=/3333/mysql.sock --port=333 需要在mysqld指定pid-file参数: [mysqld] port=3333 datadir=/3333/data socket=/3333/mysql.sock pid-file=/3333/run/db3333.pid [mysqld_safe] log-error=/3333/log/db.log pid-file=/3333/run/db.pid ###文件位置为mysqld参数的pid-file位置: ps -ef|grep 333 root 13339 13329 0 22:24 pts/2 00:00:00 -bash root 27942 1 0 23:20 pts/1 00:00:00 /bin/sh /mysql/3333/bin/mysqld_safe --datadir=/3333/data --pid-file=/3333/run/db3333.pid mysql 28114 27942 7 23:20 pts/1 00:00:00 /mysql/3333/bin/mysqld --basedir=/mysql/3333 --datadir=/3333/data --plugin-dir=/mysql/3333/lib/plugin --user=mysql --log-error=/3333/log/db.log --pid-file=/3333/run/d3333.pid --socket=/3333/mysql.sock --port=3333
  • [技术干货] mysql 5.6 多实例
    #共享软件目录,启动多个数据库,不同端口。 #只要需要修改 [root@VM-16-10-centos script]# cat a5.6.sh #!/bin/bash #test mysql version mysql-5.6.16-linux-glibc2.5-x86_64. basedir=/mysql/mysql datadir=/mysqldata dbfile=$datadir/$1 port=$1 initos() { mkdir $dbfile mkdir $dbfile/data mkdir $dbfile/log mkdir $dbfile/run touch $dbfile/log/db.log chown -R mysql:mysql $datadir/$1 } initcnf() { cat > $dbfile/my.cnf<<EOF [mysqld] port=$port datadir=$dbfile/data socket=$dbfile/mysql.sock pid-file=$dbfile/run/db.pid [mysqld_safe] log-error=$dbfile/log/db.log pid-file=$dbfile/run/db.pid EOF } initdb() { #5.7 init db #$basedir/bin/mysqld --defaults-file=$dbfile/my.cnf --user=mysql --initialize-insecure #5.6 init db $basedir/scripts/mysql_install_db --datadir=$dbfile/data --user=mysql --basedir=$basedir --defaults-file=$dbfile/my.cnf } startup() { #add startup script #通过mysql.server脚本添加,删除/etc/my.cnf,软连接$basedir/my.cnf文件,实现通过此脚本启动。 #$datadir/my.cnf不能调用port参数,只能启动默认3306端口。 mv $dbfile/my.cnf $dbfile/data/ cp $basedir/support-files/mysql.server $dbfile/mysql.$port sed -i 46{s#basedir=#basedir=$basedir#} $dbfile/mysql.$port sed -i 47{s#datadir=#datadir=$dbfile/data#} $dbfile/mysql.$port sed -i "48i ln -s $dbfile/data/my.cnf $basedir/my.cnf" $dbfile/mysql.$port sed -i '48i rm -rf $basedir/my.cnf' $dbfile/mysql.$port sed -i '48i rm -rf /etc/my.cnf' $dbfile/mysql.$port } chk() { #startup echo "startup script is $dbfile/mysql.$port" $dbfile/mysql.$port start ps -ef|grep mysql|grep -v grep } if [ $# -ne 1 ] then echo "Usage: `basename $0` {PORT-NUMBER}" else echo "mysql db port number is :$1" echo 01:init os. initos echo 02:init my.cnf. initcnf echo 03:init db. initdb echo 04:startup db. startup echo 05:chk db info. chk fi
  • [技术干货] MySql分表、分库、分片和分区知识点介绍
    一、前言    数据库的数据量达到一定程度之后,为避免带来系统性能上的瓶颈。需要进行数据的处理,采用的手段是分区、分片、分库、分表。二、分片(类似分库)     分片是把数据库横向扩展(Scale Out)到多个物理节点上的一种有效的方式,其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题。Shard这个词的意思是“碎片”。如果将一个数据库当作一块大玻璃,将这块玻璃打碎,那么每一小块都称为数据库的碎片(DatabaseShard)。将整个数据库打碎的过程就叫做分片,可以翻译为分片。     形式上,分片可以简单定义为将大数据库分布到多个物理节点上的一个分区方案。每一个分区包含数据库的某一部分,称为一个片,分区方式可以是任意的,并不局限于传统的水平分区和垂直分区。一个分片可以包含多个表的内容甚至可以包含多个数据库实例中的内容。每个分片被放置在一个数据库服务器上。一个数据库服务器可以处理一个或多个分片的数据。系统中需要有服务器进行查询路由转发,负责将查询转发到包含该查询所访问数据的分片或分片集合节点上去执行。三、Scale Out/Scale Up 和 垂直切分/水平拆分Mysql的扩展方案包括Scale Out和Scale Up两种。Scale Out(横向扩展)是指Application可以在水平方向上扩展。一般对数据中心的应用而言,Scale out指的是当添加更多的机器时,应用仍然可以很好的利用这些机器的资源来提升自己的效率从而达到很好的扩展性。Scale Up(纵向扩展)是指Application可以在垂直方向上扩展。一般对单台机器而言,Scale Up值得是当某个计算节点(机器)添加更多的CPU Cores,存储设备,使用更大的内存时,应用可以很充分的利用这些资源来提升自己的效率从而达到很好的扩展性。MySql的Sharding策略包括垂直切分和水平切分两种。垂直(纵向)拆分:是指按功能模块拆分,以解决表与表之间的io竞争。比如分为订单库、商品库、用户库...这种方式多个数据库之间的表结构不同。水平(横向)拆分:将同一个表的数据进行分块保存到不同的数据库中,来解决单表中数据量增长出现的压力。这些数据库中的表结构完全相同。表结构设计垂直切分。常见的一些场景包括a).大字段的垂直切分。单独将大字段建在另外的表中,提高基础表的访问性能,原则上在性能关键的应用中应当避免数据库的大字段b). 按照使用用途垂直切分。例如企业物料属性,可以按照基本属性、销售属性、采购属性、生产制造属性、财务会计属性等用途垂直切分c). 按照访问频率垂直切分。例如电子商务、Web 2.0系统中,如果用户属性设置非常多,可以将基本、使用频繁的属性和不常用的属性垂直切分开表结构设计水平切分。常见的一些场景包括a). 比如在线电子商务网站,订单表数据量过大,按照年度、月度水平切分b). Web 2.0网站注册用户、在线活跃用户过多,按照用户ID范围等方式,将相关用户以及该用户紧密关联的表做水平切分c). 例如论坛的置顶帖子,因为涉及到分页问题,每页都需要显示置顶贴,这种情况可以把置顶贴水平切分开来,避免取置顶帖子时从所有帖子的表中读取四、分表和分区分表从表面意思说就是把一张表分成多个小表,分区则是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上。分表和分区的区别1,实现方式上mysql的分表是真正的分表,一张表分成很多表后,每一个小表都是完正的一张表,都对应三个文件(MyISAM引擎:一个.MYD数据文件,.MYI索引文件,.frm表结构文件)。2,数据处理上分表后数据都是存放在分表里,总表只是一个外壳,存取数据发生在一个一个的分表里面。分区则不存在分表的概念,分区只不过把存放数据的文件分成了许多小块,分区后的表还是一张表,数据处理还是由自己来完成。3,提高性能上分表后,单表的并发能力提高了,磁盘I/O性能也提高了。分区突破了磁盘I/O瓶颈,想提高磁盘的读写能力,来增加mysql性能。在这一点上,分区和分表的测重点不同,分表重点是存取数据时,如何提高mysql并发能力上;而分区呢,如何突破磁盘的读写能力,从而达到提高mysql性能的目的。4,实现的难易度上分表的方法有很多,用merge来分表,是最简单的一种方式。这种方式和分区难易度差不多,并且对程序代码来说可以做到透明的。如果是用其他分表方式就比分区麻烦了。分区实现是比较简单的,建立分区表,跟建平常的表没什么区别,并且对代码端来说是透明的。分区的适用场景1. 一张表的查询速度已经慢到影响使用的时候。2.表中的数据是分段的3.对数据的操作往往只涉及一部分数据,而不是所有的数据CREATE TABLE sales ( id INT AUTO_INCREMENT, amount DOUBLE NOT NULL, order_day DATETIME NOT NULL, PRIMARY KEY(id, order_day) ) ENGINE=Innodb PARTITION BY RANGE(YEAR(order_day)) ( PARTITION p_2010 VALUES LESS THAN (2010), PARTITION p_2011 VALUES LESS THAN (2011), PARTITION p_2012 VALUES LESS THAN (2012), PARTITION p_catchall VALUES LESS THAN MAXVALUE);分表的适用场景1. 一张表的查询速度已经慢到影响使用的时候。2.当频繁插入或者联合查询时,速度变慢。分表的实现需要业务结合实现和迁移,较为复杂。五、分表与分库分表能够解决单表数据量过大带来的查询效率下降的问题,但是,却无法给数据库的并发处理能力带来质的提升。面对高并发的读写访问,当数据库master服务器无法承载写操作压力时,不管如何扩展slave服务器,此时都没有意义了。因此,我们必须换一种思路,对数据库进行拆分,从而提高数据库写入能力,这就是所谓的分库。
总条数:1406 到第 页
上滑加载中