【MySQL】数据行长度的一些限制】的更多相关文章

一.从常见的报错说起 故事的开头我们先来看一个常见的sql报错信息: 相信对于这类报错大家一定遇到过很多次了,特别对于OMG这种已内容生产为主要工作核心的BG,在内容线的存储中,数据大一定是个绕不开的话题.这里的数据“大”,远不止存储空间占用多,其中也包括了单个(表)字段存储多.大,数据留存时间长,数据冗余多,冷热数据不明显导致的体量大,访问峰值随着热点变化明显,逻辑处理复杂导致数据存储压力放大等等.回到这个报错的问题上来,我们先来看一下这个表的结构: 看到这里,我相信大家会有不同的处理方式了,…
今天开发在导入数据的时候报一个错误: Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. You have to change some columns to TEXT or BLOBs 原因:发现导入的数据单行长度较长. 官方文档的解决办法为: 1.垂直表字段拆分或者大字段合并(大字段最多不超过768,业务进行合并+拆分),divide your table…
今天被开发提交的DDL变更再次困惑,表中字段较多,希望将已有的两个varchar(4000)字段改为varchar(20000),我想innodb对varchar的存储不就是取前768字节记录当前行空间嘛,所以变更不会有任何问题的,但铁打的事实给了我结结实实的一个巴掌,直接报错,现在回放下这个错误! 模拟测试: CREATE TABLE `ttt` ( `id` DOUBLE , `select_type` VARCHAR (57), `table` VARCHAR (192), `type`…
本文由云+社区发表 一.从常见的报错说起 ​ 故事的开头我们先来看一个常见的sql报错信息: ​ 相信对于这类报错大家一定遇到过很多次了,特别对于OMG这种已内容生产为主要工作核心的BG,在内容线的存储中,数据大一定是个绕不开的话题.这里的数据"大",远不止存储空间占用多,其中也包括了单个(表)字段存储多.大,数据留存时间长,数据冗余多,冷热数据不明显导致的体量大,访问峰值随着热点变化明显,逻辑处理复杂导致数据存储压力放大等等.回到这个报错的问题上来,我们先来看一下这个表的结构: 看到…
转载自:http://blog.csdn.net/daydreamingboy/article/details/6310907 分析MySQL数据类型的长度 MySQL有几种数据类型可以限制类型的"长度",有CHAR(Length).VARCHAR(Length).TINYINT(Length).SMALLINT(Length).MEDIUMINT(Length).INT(Length).BIGINT(Length).FLOAT(Length, Decimals).DOUBLE(Len…
目录 一.行 有哪些格式? 二.紧凑的行格式长啥样? 三.MySQL单行能存多大体量的数据? 四.Compact格式是如何做到紧凑的? 五.什么是行溢出? 六.行 如何溢出? 七.思考一个问题 关注送书!<Netty实战> 文章公号 首发!连载中!关注微信公号回复:"抽奖" 还可参加抽活动 在前面的文章中,白日梦曾不止一次的提及到:InnoDB从磁盘中读取数据的最小单位是数据页. 而你想得到的id = xxx的数据,就是这个数据页众多行中的一行. 这篇文章我们就一起来看一下…
有时候需要将 MySQL 的数据导出成 excel,这很简单,无需第三方工具,直接 MySQL 命令行就自带了这样的功能.比如: 1 SELECT * FROM nowamagic into outfile 'D:\\nowamagic.xls'; 双斜杠是带转义识别目录. 当然也可以加入筛选条件,将特定的数据导出成 excel,比如: 1 SELECT name, phone, tel, source FROM nowamagic WHERE q = 'a' into outfile 'D:\…
1.mysql有哪些数据类型: 主要包括以下五大类: 整数类型:BIT.BOOL.TINY INT.SMALL INT.MEDIUM INT. INT. BIG INT 浮点数类型:FLOAT.DOUBLE.DECIMAL 字符串类型:CHAR.VARCHAR.TINY TEXT.TEXT.MEDIUM TEXT.LONGTEXT.TINY BLOB.BLOB.MEDIUM BLOB.LONG BLOB 日期类型:Date.DateTime.TimeStamp.Time.Year 其他数据类型:…
MySQL CPU 使用率高的原因和解决方法_产品性能_常见问题_云数据库 RDS 版-阿里云 https://help.aliyun.com/knowledge_detail/51587.html 常见原因 系统执行应用提交查询(包括数据修改操作)时需要大量的逻辑读(逻辑 IO,执行查询所需访问的表的数据行数),所以系统需要消耗大量的 CPU 资源以维护从存储系统读取到内存中的数据一致性. 本文通过一个简化的模型来说明系统资源.语句执行成本以及 QPS(Query Per Second 每秒执…
先介绍一个关键字的使用: delimiter 定好结束符为"$$",(定义的时候需要加上一个空格) 然后最后又定义为";", MYSQL的默认结束符为";" 如何通过mysql命令行批量插入100条数据呢,可以在代码里实现,也可以通过命令行,也就是通过存储过程: delimiter $$create procedure myproc ()begindeclare num int ;set num = 1 ;while num < 100 d…
mysqldump  是在  操作系统命令行下运行的,不是在 MySQL 命令行下运行的. 登陆数据库: 登陆本地mysql : mysql -h localhost -u root -p123456 登陆到指定的数据库  mysql -h 192.168.1.68 -u root -p123456 ppos_center 进入MySQL目录下的bin文件夹, 如:D:\xampp\mysql\bin> 一般形式:mysqldump -h IP -u 用户名 -p 数据库名 > 导出的文件名…
首先打开命令窗口,输入命令:mysql -h localhost -u selffabu -p 连接成功后,进行下面的操作 MySQL中导出CSV格式数据的SQL语句样本如下: select * from test_info into outfile '/tmp/test.csv' fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\r\n'; select *…
创建mysql数据表,设置id列递增.主键create table running_log ( id int primary key auto_increment, routename varchar(255), log varchar(255), time datetime ); 往有递增数据列的数据表插入新的数据行 1.INSERT INTO `running_log` (`id`, `routename`, `log`, `time`) VALUES ('null', 'yunnan-10…
Mysql数据库命令行输入错误 缺少另一半 错误输入 ' 或 " 时,必须键入另一半才能退出命令. 缺少分号 写入语句缺少分号需要补全. 输入quit或者exit退出 ctrl+c,完全退出 输入\c 废弃本次语句,若输入后没效果是因为未保持当前输入语句完整匹配…
(转载)http://www.5idev.com/p-php_mysql_select_count.shtml 统计数据行数 SELECT COUNT() FROM 语法用于从数据表中统计数据行数. 语法: SELECT COUNT(column) FROM tb_name 该 SQL 语法用于统计某一字段的数据行数,COUNT() 内不能是多个字段,但可以是 * 号. 例子: <?php $conn = @mysql_connect("localhost","root…
0.唯一索引 unique对num进行唯一限制,表示num是独一无二的,uql是唯一索引名称 上面为联合索引:num和xx不能完全一样  1.外键的变种 a. 用户表和部门表 用户: 1 alex 1 2 root 1 3 egon 2 4 laoyao 3 部门: 1 服务 2 保安 3 公关 ===> 一对多 b. 用户表和博客表 用户表: 1 alex 2 root 3 egon 4 laoyao 博客表: FK() + 唯一 1 /yuanchenqi/     4 2 /alex371…
Redis协议 *<args><cr><lf> 参数个数 $<len><cr><lf> 第一个参数长度 <arg0><cr><lf> 第一个参数 $<len><cr><lf> 第一个参数长度 <arg1><cr><lf> 第二个参数 ... ... 编写SQL语句,把mysql数据组合成Redis协议数据流 SELECT CON…
MySQL命令行参数 Usage: mysql [OPTIONS] [database] //命令方式  -?, --help //显示帮助信息并退出  -I, --help //显示帮助信息并退出  --auto-rehash //自动补全功能,就像linux里面,按Tab键出提示差不多,下面有例子 -A, --no-auto-rehash //默认状态是没有自动补全功能的.-A就是不要自动补全功能  -B, --batch //ysql不使用历史文件,禁用交互  (Enables --sil…
不知不觉已到了第九天了,今天主要讲了关系数据库的基本概述.安装.数据库.表和数据行的操作 1. 基本概述 1.1 数据库就是用来存储数据的.早期是存在文件里面的操作起来效率低而且不是很安全. 1.2 关系型数据库.这个可以简单理解成以表的形式存储的数据库,表与表存在着某些关系,而数据库能帮我们保存这种关系. 1.3 ANSI和ISO制定了一套SQL标准,所有数据库厂商都得遵循这个标准,但是他们也各自进行了扩展(即他们的SQL方言如:oracle的pl/sql,sql server的T-sql)…
谈谈MySQL数据表的类型 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合. 我们通常说的MySql数据库,sql server数据库等等其实是数据库管理系统,它们可以存储数据,并提供查询和更新数据库中的数据的功能等等.根据数据库如何存储数据和如何操作数据的实现机制不同,这些数据库之间即有区别又有共同点. MySql数据库是开放源代码的关系型数据库.目前,它可以提供的功能有:支持sql语言.子查询.存储过程.触发器.视图.索引.事务.锁…
        一行数据是如何来存储的呢?     变长列与定长列,NULL与NOT NULL,实际是如何整理存放到 8k的数据页上呢?     对表格进行增减列,修改长度,添加默认值等DDL SQL,对行存储结构又会有怎么样的影响呢?     什么是大对象,什么是行溢出,存储引擎是如何处理它们呢?             如果转载,请注明博文来源: www.cnblogs.com/xinysu/   ,版权归 博客园 苏家小萝卜 所有.望各位支持!      1 引入     在一个DB内,每…
本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/96 最近,在工作中遇到了MySQL中如何存储长度较长的字段类型问题,于是花了一周多的时间抽空学习了一下,并且记录下来. MySQL大致的逻辑存储结构在这篇文章中有介绍,做为基本概念:InnoDB 逻辑存储结构 注:文中所指的大数据指的是长度较长的数据字段,包括varchar/varbinay/text/blob. Compact行格式 我们首先来看一下行格式为C…
MySQL InnoDB 行记录格式(ROW_FORMAT) 一.行记录格式的分类和介绍 在早期的InnoDB版本中,由于文件格式只有一种,因此不需要为此文件格式命名.随着InnoDB引擎的发展,开发出了不兼容早期版本的新文件格式,用于支持新的功能.为了在升级和降级情况下帮助管理系统的兼容性,以及运行不同的MySQL版本,InnoDB开始使用命名的文件格式. 1. Antelope: 先前未命名的,原始的InnoDB文件格式.它支持两种行格式:COMPACT 和 REDUNDANT.MySQL5…
mysql命令行各个参数解释 http://blog.51yip.com/mysql/1056.html Usage: mysql [OPTIONS] [database]   //命令方式 -?, --help          //显示帮助信息并退出 -I, --help          //显示帮助信息并退出 --auto-rehash       //自动补全功能,就像linux里面,按Tab键出提示差不多,下面有例子 -A, --no-auto-rehash  //默认状态是没有自动…
1. 优化SQL 1)     通过show status了解各种sql的执行频率 show status like 'Com_%'        了解 Com_select,Com_insert 的执行次数 2)    通过Explain分析低效的sql语句 3)    建立合适的索引 4)    通过show status like 'Handler_%'查看索引的使用情况 a)      handler_read_key:根据索引读取行的请求数.如果该值很大,说明你的查询和表都建立了很好的…
From: http://blog.csdn.net/longyulu/article/details/7863737 http://dinglin.iteye.com/blog/914276 http://www.cnblogs.com/fakis/archive/2011/03/07/1976532.html 如果某一项中设置的是varchar(50) 那么对英文当然是50 那么对中文呢 utf-8的中文占3个字节 那么,这个varchar(50)是不是只能存16个汉字了?   不是这样的,…
一.锁 常用命令 查看表的存储引擎:mysql> show create table myLock; 修改当前表的存储引擎:mysql> alter table myLock engine=myisam; 查看数据库当前默认的存储引擎:mysql>  show variables like '%storage_engine%'; 1.读写锁(数据的操作类型): 读锁(共享锁):对于同一条记录,多个读操作可以同时进行而不会互相影响,会阻塞写操作. 写锁(排他锁):当前写操作没有完成前,会阻…
MYSQL常用命令 .导出整个数据库 mysqldump -u 用户名 -p –default-character-set=latin1 数据库名 > 导出的文件名(数据库默认编码是latin1) mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql .导出一个表 mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.…
---恢复内容开始--- Mysql数据表的增删改查 1.创建表   语法:CREATE TABLE 表名(字段1,字段2,字段3.......) CREATE TABLE `users` ( `user_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `pid` mediumint(9) DEFAULT '0' COMMENT '介绍人', `role_id` mediumint(8) DEFAULT '0' COMMENT '分佣身份ID…
一,mysql命令行参数 Usage: mysql [OPTIONS] [database]   //命令方式 -?, --help          //显示帮助信息并退出 -I, --help          //显示帮助信息并退出 --auto-rehash       //自动补全功能,就像linux里面,按Tab键出提示差不多,下面有例子 -A, --no-auto-rehash  //默认状态是没有自动补全功能的.-A就是不要自动补全功能 -B, --batch         /…