目录

Life in Flow

知不知,尚矣;不知知,病矣。
不知不知,殆矣。

标签: TRDB (30)

日志管理

错误日志 # 查看错误日志路径 mysql> select @@log_error; +----------------------------+ | @@log_error | +----------------------------+ | /data/mysql/data/mysql.log | +----------------------------+ 二进制日志 作用:用于即时点的数据恢复、主从复制 配置二进制日志(默认没有开启) # 日志要和数据分开存放 log_bin # 开关、设定存放位置 server_id # 5.6单机不需要此参数,5.7必须要加 [root@localhost ~]# mkdir /data/binlog -p [root@localhost ~]# chown -R mysql. /data/ [root@localhost ~]# vim /etc/my.cnf [mysqld] user=mysql basedir=/application/mysql datadir=/data/mysql/data socket=/tmp/my....

锁 锁定的意思,提供的是ACID中,I方面的功能。需要配合UnDO+隔离级别一起来实现 InnoDB锁级别:行级锁 Next LOCK GAP LOCK 悲观锁: 乐观锁: 需要排查锁的争用、锁等待、死锁 事务的隔离级别 影响到数据的读取,默认的级别是 RR模式. transaction_isolation 隔离级别(参数) 负责的是,MVCC,读一致性问题 RU : 读未提交,可脏读,一般部议叙出现 RC : 读已提交,可能出现幻读,可以防止脏读. RR : 可重复读,功能是防止"幻读"现象 ,利用的是undo的快照技术+GAP(间隙锁)+NextLock(下键锁) SR : 可串行化,可以防止死锁,但是并发事务性能较差 RR级别:解决了 不可重复读问题+幻读的现象 不可重复读问题是由 undo的快照技术来解决。 幻读现象是由:MVCC+GAP+next-lock来解决。 # 查看事务隔离级别 mysql> select @@tx_isolation; +-----------------+ | @@tx_isolation | +-----------------+ | RE....

InnoDB存储引擎

存储引擎的功能 数据读写 数据安全和一致性 提高性能 热备份 自动故障恢复 高可用方面支持 # 查看数据库支持的存储引擎 show engines; # 查看数据库下所有innodb的表 mysql> select table_schema,table_name ,engine from information_schema.tables 其他MySQL的引擎 PerconaDB:默认是XtraDB MariaDB:默认是InnoDB 其他的存储引擎支持: TokuDB RocksDB MyRocks 以上三种存储引擎的共同点:压缩比较高,数据插入性能极高 现在很多的NewSQL,使用比较多的功能特性. 核心特性 1、事务(Transaction) 2、MVCC(Multi-Version Concurrency Control多版本并发控制) 3、行级锁(Row-level Lock) 4、ACSR(Auto Crash Safey Recovery)自动的故障安全恢复 5、支持热备份(Hot Backup) 6、复制Replication: Group Commit , ....

索引

存储过程生成100W数据 1.创建数据库oldboy mysql> create database oldboy; 2.创建存储过程,并且创建100W条数据use oldboy use oldboy create table t100w (id int,num int,k1 char(2),k2 char(4),dt timestamp) charset utf8mb4 collate utf8mb4_bin; delimiter // create procedure rand_data(in num int) begin declare str char(62) default 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; declare str2 char(2); declare str4 char(4); declare i int default 0; while i<num do set str2=concat(substring(str,1+floor(rand()*61)....

information_schema

information_schema   是虚拟库,以及一些固定好的视图。 视图:一条查询语句的别名 元数据 ----> “基表”(无法直接查询和修改的) ----> DDL 进行元数据修改 ----> show ,desc(show),information_schema(全局类的统计和查询) use information_schema desc tables; #tables表中存储着整个数据库所有表的元数据信息 TABLE_SCHEMA 表所在的库 TABLE_NAME 表名 ENGINE 表的存储引擎 TABLE_ROWS 表的行数 AVG_ROW_LENGTH 平均行长度 INDEX_LENGTH 索引的长度 示例 --- 查询整个数据库中所有的库对应的表名 SELECT table_schema,table_name FROM information_schema.tables; --- 查询world和school库下的所有表名 SELECT table_schema,table_name FROM information_schema.tables....

Mysql在线改表工具pt-osc

背景   在mysql 5.6 版本以前,修改表结构如添加索引、修改列,需要锁表,期间不能写入,对于一个有几千万数据的大表来说,这个简直不能接收,对于分秒必争的互联网时代,服务中断很长时间的后果是很严重的。   升级Mysql 到5.6 版本后,情况会好转,支持online-DDL, 但是实际在Alter表的时候,还会有可能锁表。   pt-online-schema-change是Percona-toolkit一员, 支持在不锁表的情况下,在线改表。 pt-osc的工作原理 创建一个和要执行 alter 操作的表一样的新的空表,后缀默认是new。 在新表执行alter table 语句,因为是空表,执行速度很快。 在原表中创建触发器3个触发器分别对应insert,update,delete操作。 以一定块大小从原表拷贝数据到临时表,拷贝过程中通过原表上的触发器在原表进行的写操作都会更新到新建的临时表,注意这里是Replace操作。 表明替换 将原表名table修改为 tableold, 将tablenew 表明修改为原表名table 如果有参考该表的外键,根据alter-forei....

SQL

SQL标准 SQL92 SQL99 Mysql5.7版本之后启用了SQL_Mode 严格模式 SQL语句类型 SQL语言类型英文缩写作用 DDL:数据定义语言data definition language建库、建表、改表 DCL:数据控制语言data control languageGRANT 和 REVOKE 两个指令构成 DML:数据操作语言data manipulation languageINSERT、UPDATE、DELETE DQL:数据查询语言data query language查询数据 数据类型 制数据的规范性,让数据有具体含义,在列上进行控制 数据类型种类功能说明 char、varchar字符类型255 65535定长(固定存储空间) 变长(按需)varchar存数据时,首先进行字符串长度判断,按需分配存储空间,会单独占用一个字节来记录此次的字符长度,超过255之后,需要两个字节长度记录字符长度。 enum枚举类型enum('bj','sh','sz','cq','hb',......)数据行较多时,会影响到索引的应用数字类禁止使用enum....