首页
学习
活动
专区
圈层
工具
发布

使用shell脚本抽取MySQL表属性信息

这是学习笔记的第 1815篇文章 在最近抽取了数据库层级的信息之后,我们可以基于已有的数据做一些分析,比如那些业务属于僵尸业务,可以通过分析binlog的偏移量来得到一个初版的信息,如果在一个周期之后偏移量未发生任何变化...在这个基础上,如果某些表数据量太大,某些表数据增长过于频繁,某些表中的碎片率很高,表中的索引过度设计等,这些对于业务来说是很欢迎的,如果能够及时发现,从设计上就可以改进和完善,为后期的问题排查也提供一种参考思路...所以简而言之,表属性的收集是一个很细粒度的工作,虽然琐碎,但是尤其重要,而这个很可能是我们DBA同学目前容易忽视的。 我写了一个初版的采集脚本。...为了减少采集到的表数量过多,目前是优先采集数据量在100M以上的表,然后分析碎片率等。 完整的脚本如下,供参考。.../null ` datadir=` /usr/local/mysql/bin/mysql -udba_admin -p$dec_passwd -h127.0.0.1 -P${port} -N -e

1.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    数据库MySQL-列属性

    1.3 列属性 1.3.1 是否为空(null|not null) null表示字段值可以为null not null字段值不能为空 练习 学员姓名允许为空吗?...null 1.3.2 默认值(default) 如果一个字段没有插入值,可以默认插入一个指定的值 mysql> create table stu19( -> name varchar(20)...在MySQL中只要是自动增长列必须是主键 1.3.4 主键(primary key) 主键概念:唯一标识表中的记录的一个或一组列称为主键。...必须是主键,但是主键不一定是auto_increment 2、主键特点是不能重复不能为空 3、一个表只能有一个主键,但是一个主键可以有多个字段组成 4、自动增长列通过插入null值让其递增 5、自动增长列的数据被删除...不可以 一个表可以有多个主键吗? 不可以 在一个学校数据库中,如果一个学校内允许重名的学员,但是一个班级内不允许学员重名,可以组合班级和姓名两个字段一起来作为主键吗?

    4.4K30

    MySQL 搭建数据库表

    创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段 语法 以下为创建MySQL数据表的SQL通用语法: CREATE TABLE table_name (column_name column_type...); 以下例子中我们将在 RUNOOB 数据库中创建数据表runoob_tbl: CREATE TABLE IF NOT EXISTS `runoob_tbl`( `runoob_id` INT...NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。...---- 通过命令提示符创建表 通过 mysql> 命令窗口可以很简单的创建MySQL数据表。你可以使用 SQL 语句 CREATE TABLE 来创建数据表。...使用PHP脚本创建数据表 你可以使用 PHP 的 mysqli_query() 函数来创建已存在数据库的数据表。 该函数有两个参数,在执行成功时返回 TRUE,否则返回 FALSE。

    14.2K10

    MySQL 数据库表分区.

    MySQL 数据库在 5.1 版本时添加了对分区(partitioning)的支持。分区的过程是将一个表或索引分解成多个更小、更可管理的部分。...MySQL 数据库支持的分库类型为水平分区(指将同一表中不同行的记录分配到不同的物理文件中),并不支持垂直分区(指将同一表中不同列的记录分配到不同的物理文件中)。...MySQL 数据库允许对 NULL 值做分区,视 NULL 值小于任何一个非 NULL 值(和 ORDER BY 处理 NULL 值的规则一致)。...对于 OLAP(在线分析处理) 的应用,分区的确是可以很好地提高查询的性能,因为 OLAP 应用大多数查询需要频繁地扫描一张很大的表。假设有一张 1 亿行的表,其中有一个时间戳属性列。...我们通过 Navicat 来操作下数据库分区,表 -> 右键点击'设计表' -> 选项 -> 分割区,可以看到如下内容。 ? 来看看分区后,磁盘中 MySQL 数据库是怎么存储的。 ?

    12.9K20

    MySQL数据库: 添加列、修改列、删除列、修改列属性、修改表名(包括MySQL、SQLServer、Oracle)

    我们针对数据库的增删改查语句比较熟悉了,但是今天建立数据库的时候想在固定位置通过语句添加一列,做以下总结: ALTER TABLE:添加,修改,删除表的列,约束等表的定义。...查看列:desc 表名; 修改表名:alter table t_book rename to t_user; 添加列:ALTER TABLE t_userADD COLUMN tianjia INT...(后面表示是在id列后添加) AFTER id; 删除列:alter table 表名 drop column 列名; 修改列名MySQL: alter table t_user change...修改列名Oracle:lter table t_user rename column tianjia to xiugai int; 修改列属性:alter table t_book modify...namevarchar(22);** 注意:这里表名和列名是否加 ‘’ 都可以 针对上述部分语句做一个示例 1.我的是mysql数据库,t_user表: 2.在id的列后添加tianjia列:

    4.4K10

    MySQL使用存储过程批量更新数据库所有表某个字段值

    最近响应群里朋友完整开源之前那个博客系统,准备重构一番项目的代码,对数据库中的表决定都添加 create_by、update_by、create_time、update_time、del_flag 等字段...当时添加表的时候没有设置默认值,现在要对二三十张表某个字段,如对 del_flag 设置默认值为0,怎么做呢?一张表一张表地设置比较蠢,如何实现批量操作呢?比如查出所有的表名,然后来一个循环操作。...下面是对 sens_blog 这个库的所有的表中的 del_flag 设置默认值的示例 -- 如果存储过程存在就删除 DROP PROCEDURE IF EXISTS updateColumn; CREATE...); -- 查询数据库sens_blog中含有del_flag列的表,如果区分大小写使用binary COLUMN_NAME = 'del_flag' DECLARE result CURSOR FOR... = 0');  -- 批量设置所有表的为del_flag字段默认值为0 SET @execSql = CONCAT('ALTER TABLE  ', tname, ' ALTER COLUMN del_flag

    6.9K30

    如何使用python连接MySQL表的列值?

    MySQL 是一个开源关系数据库管理系统,广泛用于存储、管理和组织数据。使用 MySQL 表时,通常需要将多个列值组合成一个字符串以进行报告和分析。...Python是一种高级编程语言,提供了多个库,可以连接到MySQL数据库和执行SQL查询。 在本文中,我们将深入探讨使用 Python 和 PyMySQL 库连接 MySQL 表的列值的过程。...提供了有关如何连接到MySQL数据库,执行SQL查询,连接列值以及最终使用Python打印结果的分步指南。...这将打印 employee 表中每一行的first_name列和last_name列的串联值。...结论 总之,我们已经学会了如何使用Python连接MySQL表的列值,这对于任何使用关系数据库的人来说都是一项宝贵的技能。

    8.1K30

    MySQL数据库表约束详解

    1.表的约束的概念 表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。约束本质是通过技术手段,倒逼程序员,插入正确的数据。...2.空属性 两个值:null(默认的)和not null(不为空) 数据库默认字段基本都是字段为空,但是实际开发时,尽可能保证字段不为空,因为数据为空没办法参与运算。...站在正常的业务逻辑中: 如果班级没有名字,你不知道你在哪个班级 如果教室名字可以为空,就不知道在哪上课 所以我们在设计数据库表的时候,一定要在表中进行限制,满足上面条件的数据就不能插入到表中。...修改tt3表的属性: alter table tt3 change a a int(5) unsigned zerofill; 这条SQL语句的作用是修改表tt3中的列a。...自增长的特点: 任何一个字段要做自增长,前提是本身是一个索引(key一栏有值) 自增长字段必须是整数 一张表最多只能有一个自增长 案例: mysql> create table tt21( -> id

    1.7K00

    MySQL数据库表的操作

    character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准。 collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准。...'密码是32位的md5值', birthday date comment '生日' ) character set utf8 collate utf8_general_ci engine MyIsam...: seletc database();//查看当前使用的数据库 show tables;//查看当前数据库的表 desc user1;//查看user1表 show create table user1...\G //查看当时创建user1这张表时候的操作 查看当前使用的数据库:  查看当前数据库的表: 查看表: 查看建表时的操作: 修改表 修改表的操作有修改某个表的结构,比如字段名字,字段大小...alter table emp add path varchar(100) comment '图片路径' after birthday; 看到插入新字段后,对已存在的信息没有任何影响,值为NULL。

    2K20

    MYSQL数据库-表的约束

    零、前言 本章主要讲解学习MYSQl数据库中的表的约束 表的约束 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性...1、空属性 两个值:null(默认的)和not null(不为空) 数据库默认字段基本都是字段为空,但是实际开发时,尽可能保证字段不为空,因为数据为空没办法参与运算 示例:创建一个班级表,...在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单 索引的作用相当于图书的目录...索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序 数据库使用索引以找到特定值,然后顺指针找到包含该值的行。...建立外键的本质其实就是把相关性交给mysql去审核了,提前告诉mysql表之间的约束关系,那么当用户插入不符合业务逻辑的数据的时候,mysql不允许你插入

    9.7K30

    MySQL 数据库和表操作

    MySQL服务器中的 【数据库】 以文件夹的形式存放在data目录下,本章讲解如何优雅地使用SQL命令操作数据库和数据表。...一、数据库操作 1.连接MySQL服务器 mysql -uroot -p mysql数据库类型有四个库 (information_schema,mysql,performance_schema,sys)...2.创建数据库 CREATE DATABASE 库名; #查看数据库 show databases; 3.指定数据库 若要操作数据库中的表或数据则需要先指定使用哪个库; #指定使用mysql库 USE...mysql; 如果想连接上数据库就可以使用某个库,可以在登录的时候指定库 #例如登录MySQL服务器 指定使用mysql库 mysql -uroot -p mysql #查看当前使用的库 SELECT...name char(10) not null, #10个字符长度,且不能为空 age tinyint unsigned default 0 #无符号的最小整型,且默认值为0 )

    8K30

    MySQL数据库表的约束

    表的约束:表中一定要有各种约束,通过约束让我们未来插入数据库表中的数据是否合法的预期。本质通过技术手段倒逼程序员插入正确的数据。而站在MySQL视角,插入进来是数据一定是合法的。...为什么要约束:数据库是维护数据的最后一道防线,必须保证数据的完整性和可预期性。 1.null属性 在建表过程中,我们为数据类型添加时可以指定null或not null属性。...如下: 对于null属性的数据,在填写时可以不对该列填写,默认为null。 对于not null属性的数据,在填写时不可忽略。 如下: 这样对于必须填写数据的列就可以对空值进行拦截。...2.默认值约束(default) 在建表时可以对类型设置默认值属性,如果进行显示填写,会被默认设置为null。...带有not null属性列也可以选择不插入,让它选择默认值,但前提必须是default属性不为null。

    47510
    领券