![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据库
文章平均质量分 50
mysql、clickhouse等
王卫东
这个作者很懒,什么都没留下…
展开
-
mysql DDL 建表语句结构导出到EXCEL
将sql的DDL 建表语句,导出到EXCEL中转载 2022-06-07 18:30:38 · 2371 阅读 · 1 评论 -
MYSQL单行长度不能超过 65535
报错:Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535.mysql属于关系型,行式数据库, 规定单行长度不能超过65535一点都不过分。 你想当你超过65535后, 查询的iops怎么撑得住。某表已存在100个字段,在新增3个字段时,报如下错误:经排查发现MySQL默认规定一条记录的最大长度不能超过65535。(1)单个字段如果大于65535..原创 2021-04-01 21:21:25 · 4765 阅读 · 0 评论 -
MySQL查看表占用空间大小
通过SQL查看MySQL表占用空间大小原创 2021-01-14 16:26:04 · 19522 阅读 · 5 评论 -
出现这四种情况,才是考虑分库分表的时候!
数据库瓶颈不管是IO瓶颈还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载的活跃连接数的阈值。在业务service来看,就是可用数据库连接少甚至无连接可用,接下来就可以想象了(并发量、吞吐量、崩溃)。IO瓶颈 第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询会产生大量的IO,降低查询速度->分库和垂直分表 第二种:网络IO瓶颈,请求的数据太多,网络带宽不够 ->分库 CPU瓶颈 第一种:SQl问题:如SQL中包含转载 2020-10-04 11:18:23 · 560 阅读 · 1 评论 -
MySql大字段优化
最近在数据库优化的时候,看到一些表在设计上使用了text或者blob的字段,单表的存储空间已经达到了近100G,这种情况再去改变和优化就非常难了一、简介为了清楚大字段对性能的影响,我们必须要知道innodb存储引擎的处理方式:1、一些知识点1.1 在InnoDB 1.0.x版本之前,InnoDB 存储引擎提供了Compact和Redundant(Redundant 格式是为兼容之前版本而保留的)两种格式来存放行记录数据,compact 和 redundant 合称为Antelope...转载 2020-10-01 16:43:24 · 4817 阅读 · 0 评论 -
pt-osc原理、限制、及与原生online-ddl比较
ps-oschttps://www.percona.com/doc/percona-toolkit/LATEST/pt-online-schema-change.html一、MySQL ddl 的问题现状在运维mysql数据库时,我们总会对数据表进行ddl 变更,修改添加字段或者索引,对于mysql 而已,ddl 显然是一个令所有MySQL dba 诟病的一个功能,因为在MySQL中在对表进行ddl时,会锁表,当表比较小比如小于1w上时,对前端影响较小,当时遇到千万级别的表 就会影响前端应用对表.转载 2020-08-28 20:59:15 · 1684 阅读 · 0 评论 -
数据库表扩展字段设计
一、扩展字段表一个表的字段可能并非一成不变,系统的运行、需求的变化等客观条件可能会需要增加其他字段,如何在不直接修改表设计的前提下满足需求呢?该扩展字段表的思想就是将列设计转化为行设计,字段的增加表现为记录的增加。当然这种方式也不是万能的,对于需要排序、查询和索引的字段最好还是通过添加表字段的方式增加。字段名称 数据类型 属性 允许空 默认值 备注 ext_id int (4) PK AI 扩展字段编号 ...转载 2020-08-18 18:28:55 · 4987 阅读 · 0 评论 -
在线修改大表结构pt-online-schema-change
使用场景在线数据库的维护中,总会涉及到研发修改表结构的情况,修改一些小表影响很小,而修改大表时,往往影响业务的正常运转,如表数据量超过500W,1000W,甚至过亿时在线修改大表的可能影响在线修改大表的表结构执行时间往往不可预估,一般时间较长 由于修改表结构是表级锁,因此在修改表结构时,影响表写入操作 如果长时间的修改表结构,中途修改失败,由于修改表结构是一个事务,因此失败后会还原表结构,在这个过程中表都是锁着不可写入 修改大表结构容易导致数据库CPU、IO等性能消耗,使MySQL服务器性能转载 2020-06-24 13:50:53 · 486 阅读 · 0 评论 -
MySQL分区与传统的分库分表
传统的分库分表传统的分库分表都是通过应用层逻辑实现的,对于数据库层面来说,都是普通的表和库。分库分库的原因首先,在单台数据库服务器性能足够的情况下,分库对于数据库性能是没有影响的。在数据库存储上,database只起到一个namespace的作用。database中的表文件存储在一个以database名命名的文件夹中。比如下面的employees数据库:mysql> show tables in employees;+---------------------+| Table转载 2020-05-09 15:10:01 · 240 阅读 · 0 评论 -
Mysql分表和分区的区别、分库和分表区别
分表和分区的区别:一,什么是mysql分表,分区什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看:mysql分表的3种方法。什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁盘上,也可以在不同的磁盘上,具体请参考mysql分区功能详细介绍,以及实例。二,mysql分表和分区有什么区别呢1,实现方式上(1)mysql的分表是真正的分表,一张表分成很多表后,每一个小表都是完正的一张表,都对应三个文件,一个.MYD数据文件,.MYI索引文件,.fr转载 2020-05-09 17:02:32 · 305 阅读 · 0 评论 -
MySQL视图之我见
什么是数据库视图数据库视图的创建是基于SQL SELECT query和JOIN的。视图和表很相似,它也包含行和列,所以可以直接对它进行查询操作。另外大多数的数据库同样允许进行UPADTE操作,但必须满足一定的条件。视图的数据结构如图:image我们需要理解,数据库并没有存储视图所关联的数据,存储的只是视图的定义也就是相应的SQL SELECT and JOIN。那么使用数据库...转载 2020-01-20 21:32:55 · 139 阅读 · 0 评论 -
mysql视图的作用
测试表:user有id,name,age,sex字段测试表:goods有id,name,price字段测试表:ug有id,userid,goodsid字段视图的作用实在是太强大了,以下是我体验过的好处:作用一: 提高了重用性,就像一个函数。如果要频繁获取user的name和goods的name。就应该使用以下sql语言。示例: select a.name...转载 2020-01-20 21:30:52 · 114 阅读 · 0 评论 -
mysql高可用架构
高可用高可用(High Availabiltity)应用提供持续不间断(可用)的服务的能力 系统高可用性的评价通常用可用率表示造成不可用的原因硬件故障(各种) 预期中的系统软硬件维护 软件缺陷(应用代码,服务程序都可能存在bug) 攻击,泄露,认为失误...等安全事件 对于系统来说,不可用时间是各关键组件不可用时间的总和.....提高可用性的主要手段冗余,Redu...转载 2019-09-19 18:58:53 · 198 阅读 · 0 评论 -
B+树比B树更适合做文件索引的原因
B树:B+树:结构上B树中关键字集合分布在整棵树中,叶节点中不包含任何关键字信息,而B+树关键字集合分布在叶子结点中,非叶节点只是叶子结点中关键字的索引; B树中任何一个关键字只出现在一个结点中,而B+树中的关键字必须出现在叶节点中,也可能在非叶结点中重复出现;性能上(也即为什么说B+树比B树更适合实际应用中操作系统的文件索引和数据库索引?)不同于B树只适合随机检索,B...转载 2019-09-18 17:00:06 · 1174 阅读 · 0 评论 -
Linux下安装MySQL
安装步骤1、下载 下载地址:http://dev.mysql.com/downloads/mysql/5.6.html#downloads 下载版本:我这里选择的5.6.33,通用版,linux下64位 也可以直接复制64位的下载地址,通过命令下载:wgethttp://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5....原创 2017-05-04 16:09:12 · 72992 阅读 · 38 评论 -
MySQL锁释放时机(事务)
在事务执行过程中,如果有加锁操作,这个锁需要等事务提交时释放。时间线 事务1 (T1) 事务2(T2) t1 BEGIN; BEGIN; t2 UPDATE lockdemo SET state = '666' WHERE id = 2; t3 UPDATE l...转载 2018-12-28 14:57:04 · 11529 阅读 · 0 评论 -
mysql索引未生效情况
索引未生效情况使用了like,且以通配符开头('%abc...')mysql索引失效会变成全表扫描的操作 加了联合索引,如果where条件中是OR关系,索引不起作用 加了联合索引,但是使用时没有符合最左原则(联合索引采用最左原则); 不要在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描 SELECT * FROM `tbl_shopmall_p...原创 2019-06-13 20:53:24 · 1756 阅读 · 0 评论 -
Yearning 介绍(SQL审核平台)
介绍Yearning SQL 审计平台 基于Vue.js与Django的整套mysql-sql审核平台解决方案。提供基于Inception的SQL检测及执行。GitHub:https://github.com/cookieY/Yearning文档:https://cookiey.github.io/Yearning-document/安装部署(centos6.8)1、Ng...转载 2019-04-17 14:08:46 · 6179 阅读 · 0 评论 -
Mysql事物锁等待超时 Lock wait timeout exceeded; try restarting transaction
工作中遇到此异常,查找解决问题时,收集整理形成此篇文章。问题场景问题出现环境: 1、在同一事务内先后对同一条数据进行插入和更新操作; 2、多台服务器操作同一数据库; 3、瞬时出现高并发现象;不断的有一下异常抛出,异常信息:org.springframework.dao.CannotAcquireLockException: ### Error updating datab...转载 2017-11-02 14:46:42 · 1164 阅读 · 0 评论 -
MySQL监控系统Lepus的搭建
现在流行的监控系统很多,选择一个合适自己的就可以了,例如Zabbix、Nagios;监控MySQL为主的有MySQLMTOP、Lepus。本文主要介绍快速部署lepus以及监控MySQL,因为作为DBA我们还是注重MySQL的监控,当然系统状态也非常重要,监控成为我们日常工作不可缺少,废话就不多说了,下面开始环境搭建。官方网站:http://www.lepus.cc/page/product...转载 2018-12-27 09:28:36 · 1138 阅读 · 0 评论 -
mysql IN 查询的时候索引不起作用
其实很简单,索引是否起叙用,主要取决于字段类型:1. 如果字段类型为字符串,需要给in查询中的数值与字符串值都需要添加引号,索引才能起作用。2. 如果字段类型为int,则in查询中的值不需要添加引号,索引也会起叙用。IN的字段,在联合索引中,按以上方法,也会起作用。3.mysql查询优化器认为全表扫描时如果速度大于使用索引,就会不用索引,你可以使用FORCE INDEX强制mysq...原创 2018-12-05 10:05:16 · 6469 阅读 · 2 评论 -
MySQL:索引工作原理
为什么需要索引(Why is it needed)?当数据保存在磁盘类存储介质上时,它是作为数据块存放。这些数据块是被当作一个整体来访问的,这样可以保证操作的原子性。硬盘数据块存储结构类似于链表,都包含数据部分,以及一个指向下一个节点(或数据块)的指针,不需要连续存储。记录集只能在某个关键字段上进行排序,所以如果需要在一个无序字段上进行搜索,就要执行一个线性搜索(Linear Search)的过程...转载 2018-07-13 17:17:10 · 201 阅读 · 0 评论 -
mysql死锁-非主键索引更新引起的死锁
背景:最近线上经常抛出mysql的一个Deadlock,细细查来,长了知识!分析:错误日志如下:21:02:02.563 ERROR dao.CommonDao [pool-15-thread-19] [jbc.trade.qunar.com] [703c9ddbe4b143609035365ca46bff35] - db error , tableId=jbc.tr转载 2017-09-21 15:01:48 · 7382 阅读 · 2 评论 -
Mysql InnoDB 数据更新导致锁表
一、数据表结构CREATE TABLE `jx_attach` ( `attach_id` int(11) NOT NULL AUTO_INCREMENT, `feed_id` int(11) DEFAULT NULL , `attach_name` varchar(255) NOT NULL, `cycore_file_id` varchar(255) DEFAULT NULL...转载 2018-05-07 19:05:40 · 1956 阅读 · 0 评论 -
MySQL表的四种分区类型
一、什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表。mysql5.1开始支持数据表分区了。 如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区。当然也可根据其他的条件分区。二、为什么要对表进行分区为了改善大型表以及具有各种访问模式的表的可伸缩性,可管理性和提高数据库效率。分区的一些优点包括:与单个磁盘转载 2017-09-27 10:10:44 · 302 阅读 · 0 评论 -
mysql 行级锁 索引唯一值
做项目时由于业务逻辑的需要,必须对数据表的一行或多行加入行锁,举个最简单的例子,图书借阅系统。假设 id=1 的这本书库存为 1 ,但是有 2 个人同时来借这本书,此处的逻辑为Select restnum from book where id =1 ; -- 如果 restnum 大于 0 ,执行 update Update book set restnum=转载 2017-09-21 15:19:31 · 1578 阅读 · 0 评论 -
mysql 高并发环境的解决方案
1)MySQL 高并发环境解决方案 分库 分表 分布式 增加二级缓存2) 现有解决方式:水平分库分表,由单点分布到多点数据库中,从而降低单点数据库压力。 集群方案:解决DB宕机带来的单点DB不能访问问题。 引入负载均衡策略(LoadBalancePolicy简称LB) 读写分离策略:极大限度提高了应用中Read数据的速度和并发量原创 2017-03-18 16:21:09 · 1150 阅读 · 0 评论 -
txt文档内容入mysql
1、将txt文档内容入mysqlLOAD DATA LOCAL INFILE 'D:/a.txt' INTO TABLE db.`test` FIELDS TERMINATED BY '\t';原创 2015-10-11 03:56:28 · 591 阅读 · 0 评论 -
mysql性能优化-慢查询分析、优化索引和配置
目录一、优化概述二、查询与索引优化分析1性能瓶颈定位Show命令慢查询日志explain分析查询profiling分析查询 2索引及查询优化三、配置优化1) max_connections2) back_log3) interactive_timeout4)转载 2015-05-13 19:59:12 · 597 阅读 · 0 评论 -
MySQL索引原理及慢查询优化
MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等要求。我们知道一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,遇到最多的,也是最容易出问转载 2015-05-13 19:51:43 · 842 阅读 · 0 评论 -
MySQL单列索引和联合索引
MySQL单列索引和联合索引所有的MySQL列类型能被索引。在相关的列上的使用索引是改进SELECT操作性能的最好方法。一个表最多可有16个索引。最大索引长度是256个字节,尽管这可以在编译MySQL时被改变。对于CHAR和VARCHAR列,你可以索引列的前缀。这更快并且比索引整个列需要较少的磁盘空间。在CREATE TABLE语句中索引列前缀的语法看起来像这样:转载 2015-05-13 19:36:00 · 488 阅读 · 0 评论 -
mysql show processlist 命令详解
命令格式SHOW [FULL] PROCESSLISTSHOW PROCESSLIST显示哪些线程正在运行。您也可以使用mysqladmin processlist语句得到此信息。如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程(也就是,与您正在使用的MySQL账户相关的线程)。如果您不使用FULL关键词,则只显示每个查询的前100个字符。转载 2015-05-13 19:09:33 · 3056 阅读 · 0 评论 -
MySQL数据库性能优化之存储引擎选择
前言MySQL 的存储引擎可能是所有关系型数据库产品中最具有特色的了,不仅可以同时使用多种存储引擎,而且每种存储引擎和MySQL之间使用插件方式这种非常松的耦合关系。由于各存储引擎功能特性差异较大,这篇文章主要是介绍如何来选择合适的存储引擎来应对不同的业务场景。 MyISAM1.特性 不支持事务:MyISAM存储引擎不支持事务,所以对事务有要求的业转载 2015-04-23 18:03:38 · 500 阅读 · 0 评论 -
MySQL性能优化(二)
注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础优化目标减少 IO 次数IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段。降低 CPU 计算除了 IO 瓶颈之外,SQ转载 2015-04-23 16:25:20 · 466 阅读 · 0 评论 -
MySQL性能优化(一)
希望下面的这些优化技巧对你有用。1. 为查询缓存优化你的查询大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了。这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的。因为,我们某些查询转载 2015-04-23 16:08:57 · 433 阅读 · 0 评论 -
MySQL批量插入性能优化(三)
测试的方案:执行10万次Insert语句,使用不同方式。C组:静态SQL,不自动提交,有事务控制(InnoDB引擎)1、逐条执行10万次2、分批执行将10万分成m批,每批n条,分多种分批方案来执行。 D组:预编译模式SQL,不自动提交,有事务控制(InnoDB引擎)1、逐条执行10万次2、分批执行将10万分成m批,每批n条,分多种转载 2015-04-15 11:17:09 · 5441 阅读 · 0 评论 -
MySQL批量插入性能优化(一)
MySQL批量SQL插入性能优化对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长。特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久。因此,优化数据库插入性能是很有意义的。经过对MySQL innodb的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考。1. 一条SQL语句插入多条数据。常用的插转载 2015-04-15 10:50:43 · 4567 阅读 · 0 评论 -
MySQL批量插入性能优化(二)
测试的方案:执行10万次Insert语句,使用不同方式。 A组:静态SQL,自动提交,没事务控制(MyISAM引擎)1、逐条执行10万次2、分批执行将10万分成m批,每批n条,分多种分批方案来执行。 B组:预编译模式SQL,自动提交,没事务控制(MyISAM引擎)1、逐条执行10万次2、分批执行将10万分成m批,每批n条,分多转载 2015-04-15 11:02:05 · 2492 阅读 · 0 评论 -
mysql命令备份和还原
本文主要描述mysql使用命令备份和还原。原创 2015-02-26 14:27:40 · 531 阅读 · 0 评论