• [技术干货] MYSQL Durability
    The durability aspect of the ACID model involves MySQL software features interacting with your particular hardware configuration. Because of the many possibilities depending on the capabilities of your CPU, network, and storage devices, this aspect is the most complicated to provide concrete guidelines for. (And those guidelines might take the form of “buy new hardware”.) Related MySQL features include:The InnoDB doublewrite buffer. See Section 14.6.5, “Doublewrite Buffer”.The innodb_flush_log_at_trx_commit variable.The sync_binlog variable.The innodb_file_per_table variable.The write buffer in a storage device, such as a disk drive, SSD, or RAID array.A battery-backed cache in a storage device.The operating system used to run MySQL, in particular its support for the fsync() system call.An uninterruptible power supply (UPS) protecting the electrical power to all computer servers and storage devices that run MySQL servers and store MySQL data.Your backup strategy, such as frequency and types of backups, and backup retention periods.For distributed or hosted data applications, the particular characteristics of t
  • [活动公告] HERO高校联盟知识学堂(第一期)活动详情
    [活动详情] HERO高校联盟知识学堂(第一期)活动详情亲爱的同学们~华为云HERO高校联盟知识学堂活动在新学期如约与大家见面啦!数据库工程师进阶之路——化繁为简,从“新”开始本次活动由华为云数据库专家团出品,带你从基础到进阶玩转常见数据库,同时深入实战,学习如何维护和优化校园智慧订购系统。报名准备阶段(4月8日—4月22日)1. 活动报名2. 基础测试3. 领取奖励4. 话题猜想5. 邀请好友新学期,从数据库学习起航从自测开始,事半功倍只要感兴趣,就能无压力获取硬核认证#我的进阶之路猜想与计划#邀请好友,聚力冲项点击报名,完成报名后,进入活动QQ群:118388698加群二维码点击测试(暂未开始,敬请期待),根据基础测试得分,选取课程精准学习完成活动报名+基础测试,可获得购买免费微认证资格,还可获得“80+精品总结汇报ppt模板等免费下载权益”进入活动QQ群,118388698  领取点击活动帖(暂未开始,敬请期待),可参与#我的进阶之路猜想与计划#,发帖楼层每逢“6”或“8”,有机会获得数据线和盲盒冰箱帖奖励活动招募阶段,可邀请好友一起来进阶升级,根据邀请人数,有机会获取手环、榨汁机等奖励往下看还有更多惊喜福利如有心动,赶快按照下方的学习实战开启挑战吧!!!学习实战阶段(4月23日—5月13日)               阶段课程内容学习意义学习说明  学前准备4月19日-4月22日专家直播1.       了解数据库2.       数据库全景解读3.       带你畅聊大厂的各种数据库架构和场景专家助你进行数据库深入学习的专向选择根据基础测试结果,精准开启学习:基础测试水平<60分,建议进行基础学习温故知新(8门课程)基础测试水平≥60分,可直接专项深入学习Lv1基础学习4月23日-4月26日8门课程1.       数据库介绍2.       数据库基础知识3.       华为云服务-数据库服务RDS4.       SQL语法入门5.       SQL语法分类6.       数据库开发环境7.       数据库安全基础8.       数据库设计基础通过学习能够掌握数据库产品的功能特性和应用,理解数据库在基本方案中的作用和数据库迁移思路,掌握数据库购买、配置、管理的基本操作 完成基础学习8门课程或基础测试水平≥ 60分,均可参与Lv1抽奖Lv2入门与进阶4月27日-5月7日4个专项1.       7天玩转MySQL基础实战营2.       玩转MongoDB从入门到实战3.      7天玩转PG基础训练营4.       华为云数据库GaussDB(for openGauss)掌握技能:通过关系型数据库和非关系型数据库的学习,了解产品特性和高阶功能,结合企业应用的最佳实践,实现数据库能力全方位的进阶获取微认证或沙箱实验可直接参与Lv2抽奖Lv3技术实战5月8日-5月13日专家直播5月8日专家带你通过开源ERP或CRM基于华为云数据库演示如何开发、测试和调优掌握技能:专家亲授演示数据库开发、测试和调优,并指导完成2个业务实战作品输出,给予就业指导,实现职业进阶 获取职业认证可直接参与Lv3抽奖和优先获得冲击顶峰勇士奖 作品1校园智慧订购系统核心库表设计(难度系数:中)作品2数据库性能优化(难度系数:高)完成Lv1-3级进阶内容,可获得冲击顶峰勇士奖作品评选和奖项发放阶段(5月14日—5月31日)时间作品评选一等奖1名、二等奖2名、三等奖3名5月14日—5月31日颁奖典礼优秀作品、优秀个人、Lv1/ Lv2/ Lv3各阶段开宝箱抽奖官网展示优秀作品展示、优秀学员经验分享奖品发放公示后7个工作日内邮寄礼品活动奖项:·       优秀作品奖:一等奖(1名):华为M6平板电脑二等奖(2名):HUAWEI WATCH GT 2 运动款三等奖(3名):HUAWEI FreeBuds 3 无线耳机注:为便于高质量的完成作品,建议提前获取微认证或完成沙箱,并坚持完成学习打卡,获取微认证或沙箱实验可直接参与Lv2抽奖。·       优秀个人奖:旅行包5件套组合注:优秀个人奖会根据活动宣传、群内互动答疑、课程学习、任务打卡等环节积极主动的同学表现进行发放哦·       直播互动奖:精装数据线注:本次活动中有二场直播,在直播间参与互动问答的同学可获得,并且有幸运抽奖环节等待大家参与哦·       项目完成奖:华为云HERO高校联盟知识学堂结业证书注:完成本次知识学堂Lv1-Lv3阶梯课程的同学均可获得华为云HERO高校联盟知识学堂结业证书(每个阶梯有备选任务可参与哦,仔细查看活动详情~~)·       活动参与奖:报名即可获得80+精品总结汇报ppt模板等免费下载权益·       经验分享奖:活动期间在指定联盟内分享活动经验文章,精选5篇优秀分享用户额外发放旅行包5件套盒礼品+稻壳儿15天会员权益(海量ppt、表格、文档、图片模板全免费)·       活动邀请奖:邀请10人,可获得公牛插排魔方邀请20人,可获得无线鼠标邀请30人,可获得定制双肩包邀请50人,可获得华为手环4或无线榨汁机以上邀请将每个邀请人数仅限30名,先到先得哦~HERO高校联盟知识学堂第一期——联盟专属活动盟主招募&联盟集结,排位赛开启 >>点我查看联盟专属活动<<温馨提示:1、活动邀请专属链接禁止在本期知识学堂活动群内露出,如发现群内露出将取消活动邀请资格。2、活动邀请中需完成实名认证,非实名认证用户或发现机器账号等非有效账号将不计入有效邀请人数,并取消该用户活动邀请资格 >>实名认证操作指导3、活动邀请结果和其他奖项礼品在公布后7个工作日内发放相应奖品,请您耐心等待。4、统一宣传推广图文可在活动QQ群公告处查看领取。5、话题盖楼相关奖项将由华为云工作人员进行评选,如您对评奖方式有异议,请勿参加本次活动。6、如出现活动奖品库存不足的情况,华为云工作人员将会与您沟通替换同等价值的奖品,获奖者不同意此规则视为放弃奖品。7、所有获奖用户,请完成实名认证和学生认证(24岁及以下免学生认证),否则视为放弃奖励,本活动最终解释权归华为云所有。
  • [对接系列] GaussDB(DWS)与ADB(MySQL)的差异
    在线上,我们DWS(数据仓库服务)与ADB for MySQL有非常多的差异,将目前发现的差异总结如下,如有遗漏,欢迎大家补充。一、总体结构的差异在ADB for MySQL中,由上至下的结构是:实例-->数据库-->表   JDBC需要连接到实例上,使用库名.表名来进行表数据的增删改查等操作。由此可见,ADB for MySQL中实例对应DWS中的数据库,其数据库对应DWS中的模式(schema),同样,在ADB中可以使用库名.表名的方式进行跨库访问(类似于跨schema访问)。二、数据类型的差异ADB(MySQL)中大部分数据类型与DWS是一致的,如VARCHAR、int、bigint、decimal等,但有如下几个数据类型需要大家注意:    1.datetime与timestamp在ADB(MySQL)中datetime是没有时区的时间戳,而timestamp是带时区的时间戳,因此,在转换成DWS中的数据类型时,datetime需要转为timestamp without time zone,timestamp转为timestamp with time zone;    2.tinyintDWS与ADB中均存在tinyint这种数据类型,但是,在ADB中其范围是 -128~127,而DWS中为0~255,因此,ADB中的tinyint需要转为DWS中smallint,或int;三、常用函数的差异ADB中的日期处理函数与DWS中完全不一致,在语法改造过程中需要格外的注意。日期的加减,在ADB中有两个不同函数,分别为date_add及date_sub,DWS中可直接改为加减号,但是有一点大家要注意,ADB中INTERVAL后是可以不加单引号的,而且其数值可以是一个字段名。      如下,select DATE_ADD(NOW(),INTERVAL col1 DAY) from table1;而且,在ADB中INTERVAL 后面的小数会自动截取整数位,这点也是与DWS有很大差距的,这种语法一样但是结果不同的差异,大家一定要注意。此外,字符与日期之间的相互转化,ADB中为date_format(now(),'%Y%m%d')及str_to_date('20201127193000','%Y%m%d%H%i%s'),这里有一点需要注意,to_date这个函数在MySQL兼容模式下,其输出为日期,而不是时间戳。例如:to_date('20201127193000','yyyymmddhh24miss'),其结果为 2020-11-27,因此在做函数转化的时候,需要将str_to_date改为to_timestamp而不是to_date。    其他一些ADB特有的函数,如ifnull、if、max_pt等,都需要做相应的转换四、其他    ADB(MySQL)与DWS的差异当然不仅仅这些,这里只是简单列举了一些常见的、容易出问题的地方供大家参考,此外还有以下几点需要注意:1、ADB中联合主键中的某一个字段可以为空值。若需要从ADB中同步数据时,如果报错信息是违反非空约束,那除了字段与ADB没有对齐之外,还有一种可能就是因为联合主键中出现了空值。此时,可以将主键改为唯一索引来规避此问题。2、ADB中如果没有指定主键,会自动建一个`__adb_auto_id__` bigint AUTO_INCREMENT的自增序列作为主键,DWS中需要改成__adb_auto_id__ bigserial。在使用CDM从ADB同步数据时,该字段是无法默认出现的,需要在CDM中手工添加该字段的映射关系,或去掉该字段映射,使用DWS的默认自增序列。3、ADB中的replace into需要改为merge into,如果是调度周期比较短或者更新表数据量很大,需要重点关注,可以将merge into 改为select * from a union all select b.* from b left  join a on b.id =a.id where a.id is null(a是源表,b是目标表)4、分区ADB中可以支持overwrite一个分区的数据,而DWS不支持,因此,在进行语法改造的时候要提高警惕,不要把所有的overwrite都复制过来,需要先删除当前分区的数据,再插入新的数据。
  • [运维管理] pg_tables 部分记录created和last_ddl_time为空
    有需求需要按时间统计高斯库中的表,查询pg_tables发现有一些表created和last_ddl_time为空,这是什么原因呢
  • [技术干货] ICP
    Index Condition Pushdown(ICP)Index Condition Pushdown (ICP)是MySQL使用索引从表中检索行数据的一种优化方式。ICP原理禁用ICP,存储引擎会通过遍历索引定位基表中的行,然后返回给MySQL Server层,再去为这些数据行进行WHERE后的条件的过滤。开启ICP,如果部分WHERE条件能使用索引中的字段,MySQL Server 会把这部分下推到存储引擎层,存储引擎通过索引过滤,把满足的行从表中读取出。ICP能减少引擎层访问基表的次数和MySQL Server 访问存储引擎的次数。 ICP的目标是减少从基表中全纪录读取操作的数量,从而降低IO操作对于InnoDB表,ICP只适用于辅助索引。ICP标识当使用ICP优化时,执行计划的Extra列显示Using indexcondition提示
  • [技术干货] mysql bka
    MySQL 5.6版本开始增加了提高表join性能的算法:Batched Key Access (BKA)的新特性。BKA算法原理:将外层循环的行/结果集存入join buffer,内存循环的每一行数据与整个buffer中的记录做比较,可以减少内层循环的扫描次数.
  • [技术干货] Mysql将查询结果集转换为JSON数据的实例代码
    Mysql将查询结果集转换为JSON数据 前言学生表学生成绩表查询单个学生各科成绩(转换为对象JSON串并用逗号拼接)将单个学生各科成绩转换为数组JSON串将数组串作为value并设置key两张表联合查询(最终SQL,每个学生各科成绩)最终结果学生表CREATE TABLE IF NOT EXISTS `student`( `id` INT UNSIGNED AUTO_INCREMENT, `name` VARCHAR(100) NOT NULL PRIMARY KEY ( `id` ))ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO student( id, name ) VALUES ( 1, '张三' );INSERT INTO student( id, name ) VALUES ( 2, '李四' );学生成绩表CREATE TABLE IF NOT EXISTS `score`( `id` INT UNSIGNED AUTO_INCREMENT, `name` VARCHAR(100) NOT NULL `student_id` INT(100) NOT NULL, `score` VARCHAR(100) NOT NULL PRIMARY KEY ( `id` ))ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO score( id, name, student_id, score) VALUES ( 1, '数学', 1, '95.5' );INSERT INTO score( id, name, student_id, score) VALUES ( 2, '语文', 1, '99.5' );INSERT INTO score( id, name, student_id, score) VALUES ( 3, '数学', 2, '95.5' );INSERT INTO score( id, name, student_id, score) VALUES ( 4, '语文', 2, '88' );查询单个学生各科成绩(转换为对象JSON串并用逗号拼接)SELECT GROUP_CONCAT(JSON_OBJECT( 'id',id,'name',name,'student_id',student_id, 'score', score)) as scores FROM scroe where student_id = 1;## 查询结果## {"id": 1, "name": "数学", "student_id": 1, "score": "95.5"},{"id": 2, "name": "语文", "student_id": 1, "score": "99.5"}将单个学生各科成绩转换为数组JSON串SELECT CONCAT('[', GROUP_CONCAT(JSON_OBJECT( 'id',id,'name',name,'student_id',student_id, 'score', score)), ']') as scores FROM scroe where student_id = 1## 查询结果## [{"id": 1, "name": "数学", "student_id": 1, "score": "95.5"},{"id": 2, "name": "语文", "student_id": 1, "score": "99.5"}]将数组串作为value并设置keySELECT CONCAT('{"scoreData":[', GROUP_CONCAT(JSON_OBJECT( 'id',id,'name',name,'student_id',student_id, 'score', score)), ']}') as scores FROM scroe where student_id = 1## 查询结果## {"scoreData": [{"id": 1, "name": "数学", "student_id": 1, "score": "95.5"},{"id": 2, "name": "语文", "student_id": 1, "score": "99.5"}]}两张表联合查询(最终SQL,每个学生各科成绩)SELECT id, name,(SELECT CONCAT('[', GROUP_CONCAT(JSON_OBJECT( 'id',id,'name',name,'student_id',student_id, 'score', score)), ']') as scores FROM scroe WHERE student_id = stu.id) AS scoresfrom student stu## [{"id": 1, "name": "数学", "student_id": 1, "score": "95.5"},{"id": 2, "name": "语文", "student_id": 1, "score": "99.5"}]最终结果1张三[{“id”: 1, “name”: “数学”, “student_id”: 1, “score”: “95.5”},{“id”: 2, “name”: “语文”, “student_id”: 1, “score”: “99.5”}]2李四[{“id”: 3, “name”: “数学”, “student_id”: 1, “score”: “95.5”},{“id”:4, “name”: “语文”, “student_id”: 1, “score”: “88”}]
  • [公告] 华为云数据库MySQL服务于2021年4月15日00:00(北京时间)对华北-北京四、华东-上海一、华南-广州区域进行产品规格类
    尊敬的华为云客户:华为云云数据库MySQL服务计划于2021/04/15 00:00(北京时间)对华北-北京四、华东-上海一、华南-广州区域进行产品规格类型调整,调整后详情如下:1、新购的云数据MySQL实例将按调整后的规格及价格收取费用。2、对已经申请的云数据库MySQL实例,您可根据您的业务情况进行选择。1)若进行规格变更,则按照调整后的规格及价格计费。2)若进行续费和扩容,则按照调整前的规格和价格计费。具体调整内容包含:1、存储空间:新增“SSD云盘”,去除“超高IO”,其价格如下:计费项产品类型说明步长规格按小时(元/GB)包月(元/GB)包1年(元/GB)包2年(元/GB)包3年(元/GB)单机实例(含只读)存储SSD云盘线性计费10 GB0.00211016.818主备存储SSD云盘线性计费10 GB0.00221.61626.8828.82、规格变更:新增“通用型实例”和“独享型实例”,去除“通用增强I型”和“通用增强II型”实例,调整后的规格及价格如下:形态CPUMEM按小时(元)包月(元)包1年(元)包2年(元)包3年(元)通用型(单机版)240.3215615602620.82808480.753603600604864808161.573073001226413140280.381901900319234204160.954804800806486408321.911000100001680018000通用型(主备)241.0240640606820.87308481.9805805013524144908163.61575157502646028350281.155205200873693604162.110001000016800180008324.22000200003360036000独享型(主备)4162.813901390023352250208325.6270027000453604860016641153005300089040954003212821.8105001050001764001890006425643.75210002100003528003780004323.617201720028896309608647.234403440057792619201612814.46880688001155841238406451256.2527000270000453600486000通用型(只读)240.5120320303410.43654480.95402.54025676272458161.8787.578751323014175280.5752602600436846804161.055005000840090008322.11000100001680018000独享型(只读)4161.4695695011676125108322.8135013500226802430016645.526502650044520477003212810.952505250088200945006425621.875105001050001764001890004321.8860860014448154808643.61720172002889630960161287.234403440057792619206451228.12513500135000226800243000更多关于云数据库MySQL的产品介绍,请您点击了解。如您有任何问题,可随时通过工单或者服务热线( 4000-955-988或950808 )与我们联系。感谢您对华为云的支持!
  • [技术干货] MySQL 撤销日志与重做日志
    Undo Log产生和销毁Undo Log在事务开始前产生;事务在提交时,并不会立刻删除undo log,innodb会将该事务对应的undo log放入到删除列表中,后面会通过后台线程purge thread进行回收处理。Undo Log属于逻辑日志,记录一个变化过程。例如执行一个delete,undolog会记录一个insert;执行一个update,undolog会记录一个相反的update。Undo Log存储Undo log采用段的方式管理和记录。在innodb数据文件中包含一种rollback segment回滚段,内部包含1024个undo log segment。可以通过下面一组参数来控制Undo log存储。show variables like '%innodb_undo%'; Undo Log作用Undo Log 是为了实现事务的原子性而出现的产物。事务处理过程中,如果出现了错误或者用户执行了 ROLLBACK 语句,MySQL 可以利用 Undo Log 中的备份将数据恢复到事务开始之前的状态。实现多版本并发控制(MVCC)Undo Log 在 MySQL InnoDB 存储引擎中用来实现多版本并发控制。事务未提交之前,Undo Log保存了未提交之前的版本数据,Undo Log 中的数据可作为数据旧版本快照供其他并发事务进行快照读。事务A手动开启事务,执行更新操作,首先会把更新命中的数据备份到 Undo Buffer中。事务B手动开启事务,执行查询操作,会读取 Undo 日志数据返回,进行快照读Redo Log指事务中修改的任何数据,将最新的数据备份存储的位置(Redo Log),被称为重做日志。Redo Log 的生成和释放随着事务操作的执行,就会生成Redo Log,在事务提交时会将产生Redo Log写入Log Buffer,并不是随着事务的提交就立刻写入磁盘文件。等事务操作的脏页写入到磁盘之后,Redo Log 的使命也就完成了,Redo Log占用的空间就可以重用(被覆盖写入)。Redo Log 工作原理Redo Log 是为了实现事务的持久性而出现的产物。防止在发生故障的时间点,尚有脏页未写入表的 ibd 文件中,在重启 MySQL 服务的时候,根据 Redo Log 进行重做,从而达到事务的未入磁盘数据进行持久化这一特性。Redo Log 写入机制Redo Log 文件内容是以顺序循环的方式写入文件,写满时则回溯到第一个文件,进行覆盖写write pos 是当前记录的位置,一边写一边后移,写到最后一个文件末尾后就回到 0 号文件开头;checkpoint 是当前要擦除的位置,也是往后推移并且循环的,擦除记录前要把记录更新到数据文件;
  • [技术干货] MySQL中关于null值的一个小问题
    在测试null值的时候,发现了一个小问题,记录在这里,不知道大家以前遇到过没。 事情发展是这样的,在过滤一个表中的数值的时候,需要把age=2的列给剔除掉,然后查看剩余的列信息,这个操作看起来比较简单,我用一个表模拟一下过程:CREATE TABLE `test` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `age` int(11) DEFAULT NULL,  `score` varchar(20) NOT NULL DEFAULT '',  PRIMARY KEY (`id`),  KEY `idx_score` (`score`)) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8表结构如上,其中id和score都加了not null的限制,而age字段没有添加这个约束,然后我们先插入一部分数据,如下:mysql:yeyztest 23:32:57>>select * from test;+----+------+-------+| id | age  | score |+----+------+-------+|  1 |    1 | 5     ||  2 |    2 | 10    ||  5 |    5 | 25    ||  8 |    8 | 40    ||  9 |    2 | 45    || 10 |    5 | 50    || 11 |    8 | 55    |+----+------+-------+7 rows in set (0.00 sec)当前这组数据是全量的,每个字段都有值,然后我们使用下面的SQL语句来查询制定记录:mysql:yeyztest 23:33:14>>select * from test where age!=2;+----+------+-------+| id | age  | score |+----+------+-------+|  1 |    1 | 5     ||  5 |    5 | 25    ||  8 |    8 | 40    || 10 |    5 | 50    || 11 |    8 | 55    |+----+------+-------+5 rows in set (0.00 sec)此时我们插入两条记录进去:mysql:yeyztest 23:33:17>>insert into test (id,score) values (12,60);Query OK, 1 row affected (0.00 sec)mysql:yeyztest 23:34:02>>insert into test (id,score) values (13,65);Query OK, 1 row affected (0.00 sec)mysql:yeyztest 23:34:10>>select * from test;+----+------+-------+| id | age  | score |+----+------+-------+|  1 |    1 | 5     ||  2 |    2 | 10    ||  5 |    5 | 25    ||  8 |    8 | 40    ||  9 |    2 | 45    || 10 |    5 | 50    || 11 |    8 | 55    || 12 | NULL | 60    || 13 | NULL | 65    |+----+------+-------+9 rows in set (0.00 sec)再次使用上面的语句进行查询,可以看到结果如下:mysql:yeyztest 23:34:15>>select * from test where age!=2;+----+------+-------+| id | age  | score |+----+------+-------+|  1 |    1 | 5     ||  5 |    5 | 25    ||  8 |    8 | 40    || 10 |    5 | 50    || 11 |    8 | 55    |+----+------+-------+5 rows in set (0.00 sec)也就是说,当记录中包含null值的时候,使用反向匹配age!=2是无法得到全量的查询结果的,这明显不符合我们的预期。   其实这个问题,在之前的文章中有说到过,就是在一条数据记录里面,null值字段和一般的字段是不在一起存储的,null值字段是存储在null值列表里面的。所以造成了检索时候不匹配的现象,这个还是比较重要的一个点,希望对大家有用。
  • [技术干货] DB2 常用命令速查(备忘)
        asauto - 自动启动 DB2 管理服务器    dascrt - 创建 DB2 管理服务器    dasdrop - 除去 DB2 管理服务器    dasmigr - 迁移 DB2 管理服务器    dasupdt - 更新 DB2 管理服务器    db2_deinstall - 卸载 DB2 产品或功能部件    db2_install - 安装 DB2 产品    db2admin - DB2 管理服务器    db2adutl - 管理 TSM 内的 DB2 对象    db2advis - DB2 设计顾问程序    db2audit - 审计设施管理员工具    db2batch - 基准程序工具    db2bfd - 绑定文件描述工具    db2ca - 启动“配置助手”    db2cap - CLI/ODBC 静态程序包绑定工具    db2cat - 系统目录分析    db2cc - 启动控制中心    db2cfexp - 连接配置导出工具    db2cfimp - 连接配置导入工具    db2chglibpath - 修改嵌入的运行时库搜索路径    db2chgpath - 更改嵌入的运行时路径    db2ckbkp - 检查备份    db2ckmig - 数据库预迁移工具    db2ckrst - 检查增量复原映像序列    db2cli - DB2 交互式 CLI    db2cmd - 打开 DB2 命令窗口    db2dart - 数据库分析和报告工具    db2daslevel - 显示 DAS 级别    db2dclgn - 声明生成器    db2diag - db2diag.log 分析工具    db2drdat - DRDA 跟踪    db2drvmp - DB2 数据库驱动器映射    db2empfa - 启用多页文件分配    db2envar.bat - 设置当前命令窗口的环境    db2eva - 事件分析器    db2evmon - 事件监视器生产率工具    db2evtbl - 生成事件监视器目标表定义    db2exfmt - 说明表格式    db2exmig - 迁移说明表命令    db2expln - SQL 和 XQuery 说明    db2extsec - 设置 DB2 对象的许可权    db2flsn - 查找日志序号    db2fm - DB2 故障监视器    db2fs - 第一步    db2gcf - 控制 DB2 实例    db2gov - DB2 控制器    db2govlg - DB2 控制器日志查询    db2gpmap - 获取分布图    db2hc - 启动运行状况中心    db2iauto - 自动启动实例    db2iclus - Microsoft Cluster Server    db2icrt - 创建实例    db2idrop - 除去实例    db2ilist - 列示实例    db2imigr - 迁移实例    db2inidb - 初始化镜像数据库    db2inspf - 格式化检查结果    db2isetup - 启动实例创建界面    db2iupdt - 更新实例    db2jdbcbind - DB2 JDBC 程序包绑定程序    db2ldcfg - 配置 LDAP 环境    db2level - 显示 DB2 服务级别    db2licm - 许可证管理工具    db2listvolumes - 显示所有磁盘卷的 GUID    db2logsforrfwd - 列示前滚恢复所需的日志    db2look - DB2 统计信息和 DDL 抽取工具    db2ls - 列出已安装的 DB2 产品和功能部件    db2move - 数据库移动工具    db2mqlsn - MQ 侦听器    db2mscs - 设置 Windows 故障转移实用程序    db2mtrk - 内存跟踪程序    db2nchg - 更改数据库分区服务器配置    db2ncrt - 将数据库分区服务器添加至实例    db2ndrop - 从实例中删除数据库分区服务器    db2osconf - 内核参数值的实用程序    db2pd - 监视 DB2 数据库并对它进行故障诊断    db2pdcfg - 为问题确定行为配置 DB2 数据库    db2perfc - 复位数据库性能值    db2perfi - 性能计数器注册实用程序    db2perfr - 性能监视器注册工具    db2rbind - 重新绑定所有程序包    db2relocatedb - 重定位数据库    db2rfpen - 复位前滚暂挂状态    db2rspgn - 响应文件生成器    db2sampl - 创建样本数据库    db2set - DB2 概要文件注册表    db2setup - 安装 DB2    db2sql92 - 符合 SQL92 的 SQL 语句处理器    db2sqljbind - SQLJ 概要文件绑定程序    db2sqljcustomize - SQLJ 概要文件定制程序    db2sqljprint - SQLJ 概要文件打印程序    db2start - 启动 DB2    db2stop - 停止 DB2    db2support - 问题分析和环境收集工具    db2swtch - 切换缺省 DB2 副本    db2sync - 启动 DB2 同步器    db2systray - 启动 DB2 系统任务栏    db2tapemgr - 管理磁带上的日志文件    db2tbst - 获取表空间状态    db2trc - 跟踪    db2uiddl - 准备转换为 V5 语义的唯一索引转换    db2undgp - 撤销执行特权    db2unins - 卸载 DB2 数据库产品    db2untag - 释放容器标记    db2updv9 - 将数据库更新为版本 9 当前级别    db2xdbmig - 迁移 XSR 对象    db2xprt - 格式化陷阱文件    disable_MQFunctions - 禁用 WebSphere MQ 函数    doce_deinstall - 卸载 DB2 **    doce_install - 安装 DB2 **    enable_MQFunctions - 启用 WebSphere MQ 函数    installFixPack - 更新已安装的 DB2 产品    setup - 安装 DB2    sqlj - SQLJ 转换程序
  • [互动交流] centOS安装mysql提示报错Cannot download repomd.xml
    【功能模块】【操作步骤&问题现象】1、使用了华为云作为yum源2、运行命令 yum makecache 后提示报错Cannot download repomd.xml【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [技术干货] mysql 导入导出数据库以及函数、存储过程的介绍
    mysql常用导出数据命令:1.mysql导出整个数据库  mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql    mysqldump -hlocalhost -uroot hqgr> hqgr.sql     (如果root用户没用密码可以不写-p,当然导出的sql文件你可以制定一个路径,未指定则存放在mysql的bin目录下)2.mysql导出数据库一个表  mysqldump -hhostname -uusername -ppassword database  tablename> 导出的文件名  mysqldump -hlocalhost -uroot hqgr t_ug_user> user.sql3.mysql导出一个数据库结构 mysqldump -hhostname -uusername -ppassword  -d --add-drop-table databasename>d:hqgrstructure.sql -d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table4.如果需要导出mysql里面的函数或者存储过程  mysqldump -hhostname -uusername -ppassword -ntd -R databasename > backupflie.sql  mysqldump -hlocalhost -uroot -ntd -R hqgr > hqgr.sql  其中的 -ntd 是表示导出存储过程;-R是表示导出函数mysql常用导入数据的命令:1.mysql命令  mysql -hhostname -uusername - ppassword databasename < backupfile.sql2.source命令  mysql>source backupfile.sql
  • [技术干货] MySQL分库分表总结
    项目开发中,我们的数据库数据越来越大,随之而来的是单个表中数据太多。以至于查询变慢,而且由于表的锁机制导致应用操作也受到严重影响,出现了数据库性能瓶颈。当出现这种情况时,我们可以考虑分库分表,即将单个数据库或表进行拆分,拆分成多个库和多个数据表,然后用户访问的时候,根据一定的算法与逻辑,让用户访问不同的库、不同的表,这样数据分散到多个数据表中,减少了单个数据表的访问压力。提升了数据库访问性能。下面是对项目中分库分表的一些总结:单库单表单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到。单库多表随着用户数量的增加,user表的数据量会越来越大,当数据量达到一定程度的时候对user表的查询会渐渐的变慢,从而影响整个DB的性能。如果使用mysql, 还有一个更严重的问题是,当需要添加一列的时候,mysql会锁表,期间所有的读写操作只能等待。可以通过某种方式将user进行水平的切分,产生两个表结构完全一样的user_0000,user_0001等表,user_0000 + user_0001 + …的数据刚好是一份完整的数据。多库多表随着数据量增加也许单台DB的存储空间不够,随着查询量的增加单台数据库服务器已经没办法支撑。这个时候可以再对数据库进行水平区分。分库分表规则设计表的时候需要确定此表按照什么样的规则进行分库分表。例如,当有新用户时,程序得确定将此用户信息添加到哪个表中;同理,当登录的时候我们得通过用户的账号找到数据库中对应的记录,所有的这些都需要按照某一规则进行。路由通过分库分表规则查找到对应的表和库的过程。如分库分表的规则是user_id mod 4的方式,当用户新注册了一个账号,账号id的123,我们可以通过id mod 4的方式确定此账号应该保存到User_0003表中。当用户123登录的时候,我们通过123 mod 4后确定记录在User_0003中。分库分表产生的问题,及注意事项1.分库分表维度的问题假如用户购买了商品,需要将交易记录保存取来,如果按照用户的纬度分表,则每个用户的交易记录都保存在同一表中,所以很快很方便的查找到某用户的购买情况,但是某商品被购买的情况则很有可能分布在多张表中,查找起来比较麻烦。反之,按照商品维度分表,可以很方便的查找到此商品的购买情况,但要查找到买人的交易记录比较麻烦。所以常见的解决方式有:a.通过扫表的方式解决,此方法基本不可能,效率太低了。b.记录两份数据,一份按照用户纬度分表,一份按照商品维度分表。c.通过搜索引擎解决,但如果实时性要求很高,又得关系到实时搜索。2.联合查询的问题联合查询基本不可能,因为关联的表有可能不在同一数据库中。3.避免跨库事务避免在一个事务中修改db0中的表的时候同时修改db1中的表,一个是操作起来更复杂,效率也会有一定影响。4.尽量把同一组数据放到同一DB服务器上例如将卖家a的商品和交易信息都放到db0中,当db1挂了的时候,卖家a相关的东西可以正常使用。也就是说避免数据库中的数据依赖另一数据库中的数据。一主多备在实际的应用中,绝大部分情况都是读远大于写。Mysql提供了读写分离的机制,所有的写操作都必须对应到Master,读操作可以在Master和Slave机器上进行,Slave与Master的结构完全一样,一个Master可以有多个Slave,甚至Slave下还可以挂Slave,通过此方式可以有效的提高DB集群的QPS.                                                      所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。此外,可以看出Master是集群的瓶颈,当写操作过多,会严重影响到Master的稳定性,如果Master挂掉,整个集群都将不能正常工作。所以1.当读压力很大的时候,可以考虑添加Slave机器的分式解决,但是当Slave机器达到一定的数量就得考虑分库了。2.当写压力很大的时候,就必须得进行分库操作。MySQL使用为什么要分库分表可以用说用到MySQL的地方,只要数据量一大, 马上就会遇到一个问题,要分库分表.这里引用一个问题为什么要分库分表呢?MySQL处理不了大的表吗?其实是可以处理的大表的.我所经历的项目中单表物理上文件大小在80G多,单表记录数在5亿以上,而且这个表属于一个非常核用的表:朋友关系表.但这种方式可以说不是一个最佳方式. 因为面临文件系统如Ext3文件系统对大于大文件处理上也有许多问题. 这个层面可以用xfs文件系统进行替换.但MySQL单表太大后有一个问题是不好解决: 表结构调整相关的操作基本不在可能.所以大项在使用中都会面监着分库分表的应用.从Innodb本身来讲数据文件的Btree上只有两个锁, 叶子节点锁和子节点锁,可以想而知道,当发生页拆分或是添加新叶时都会造成表里不能写入数据. 所以分库分表还就是一个比较好的选择了.那么分库分表多少合适呢?经测试在单表1000万条记录以下,写入读取性能是比较好的. 这样在留点buffer,那么单表全是数据字型的保持在800万条记录以下, 有字符型的单表保持在500万以下.如果按 100库100表来规划,如用户业务:500万*100*100 = 50000000万 = 5000亿记录.心里有一个数了,按业务做规划还是比较容易的.真题设定网站用户数量在千万级,但是活跃用户数量只有1%,如何通过优化数据库提高活跃用户访问速度?答:可以使用MySQL的分区,把活跃用户分在一个区,不活跃用户分在另外一个区,本身活跃用户区数据量比较少,因此可以提高活跃用户访问速度。还可以水平分表,把活跃用户分在一张表,不活跃用户分在另一张表,可以提高活跃用户访问速度。
  • [学习交流] 只看到了MySQL和jdbc的资料,大数据老师课堂中提到的资料有吗
总条数:1406 到第 页
上滑加载中