
MYSQL基础
文章平均质量分 73
kf_panda
这个作者很懒,什么都没留下…
展开
-
innodb_fast_shutdown
Innodb_fast_shutdown告诉innodb在它关闭的时候该做什么工作。有三个值可以选择: 1. 0表示在innodb关闭的时候,需要purge all, merge insert buffer,flush dirty pages。这是最慢的一种关闭方式,但是restart的时候也是最快的。后面将介绍purge all,merge insert buffer,flush dirt原创 2016-10-19 14:44:09 · 1186 阅读 · 0 评论 -
MySQL AUTO_INCREMENT
CREATE TABLE `t` ( `id` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;mysql> insert into t values();Query OK, 1 row affected (0.06 sec)mysql> ins原创 2015-08-13 09:25:11 · 671 阅读 · 0 评论 -
MySQL 幻读
SESSION1 SESSION2mysql -uroot -h192.168.60.159 test mysql -uroot -h192.168.60.159 testdelete from t;in原创 2015-08-25 19:56:11 · 834 阅读 · 1 评论 -
收藏一些mysql博客
国内MYSQL 技术博客http://isky000.com/ 简朝阳http://www.ourmysql.com/http://www.mysqlsupport.cn/http://imysql.cn/ 叶金荣http://www.mysqlab.net/blog/ 谭俊青http://www.orczhou.com/http://www.ningoo.net/ (原创 2015-08-11 14:13:43 · 463 阅读 · 0 评论 -
mysql分区表技术
1、概述 数据库单表到达一定量后,性能会有衰减,像mysql\sql server等犹为明显,所以需要把这些数据进行分区处理。同时有时候可能出现数据剥离什么的,分区表就更有用处了! MySQL 5.1 中新增的分区(Partition)功能就开始增加,优势也越来越明显了:--与单个磁盘或文件系统分区相比,可以存储更多的数据--很容易就能删除不用或者过时的数据--一些原创 2015-07-30 10:07:25 · 477 阅读 · 0 评论 -
mysql任务调度
自MySQL5.1.6起,增加了一个非常有特色的功能–事件调度器(Event Scheduler),可以用做定时执行某些特定任务(例如:删除记录、对数据进行汇总等等),来取代原先只能由操作系统的计划任务来执行的工作。更值得一提的是MYSQL的事件调度器可以精确到每秒钟执行一个任务,而操作系统的计划任务(如:Linux下的CRON或Windows下的任务计划)只能精确到每分钟执行一次。对于一些对数据原创 2015-07-23 20:09:02 · 991 阅读 · 0 评论 -
log_bin_trust_function_creators & max_allowed_packet
log_bin_trust_function_creatorsThis function has none of DETERMINISTIC, NO SQL解决办法创建存储过程时出错信息:ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in it原创 2015-08-10 13:23:00 · 765 阅读 · 0 评论 -
Mysql temporary table
Internal Temporary Table 当我们的SQL语句相对“复杂”,需要MySQL思考更多时,就会出发自身使用internal temp table,比如:语句中有order by或是group by,还有当我们要修改表的一些属性,比如增加加索引或是添加字段,这些都有可能使用到临时表,我们通过explain这个命令输出的extra列可以看到这样的提示using tempor原创 2015-07-28 16:16:06 · 3834 阅读 · 0 评论 -
mysql中show index from tb_name
show index from table_name这个命令有助于诊断性能低下的查询,尤其是查询是否使用了可用的索引。下面介绍下 这个命令显示的结果列的含义:| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null |原创 2015-07-14 20:40:14 · 481 阅读 · 0 评论 -
Mysql bit类型带来的坑
对一个表进行创建索引后,开发报告说之前可以查询出结果的查询在创建索引之后查询不到结果:mysql> SELECT count(*) FROM `node` WHERE uid='1655928604919847' AND is_deleted='0';+----------+| count(*) |+----------+| 0 |+---------原创 2015-07-06 15:26:08 · 23117 阅读 · 1 评论 -
Mysql 收集统计信息
如何收集统计信息Analyze table收集表和索引统计信息,适用于MyISAM和InnoDB;对于innodb表,还可以使用以下选项1 表第一次打开的时候2 表修改的行超过1/16或者20亿条 ./row/row0mysql.c:row_update_statistics_if_needed3 执行show index/table或者查询info原创 2015-06-15 16:53:18 · 6628 阅读 · 0 评论 -
Mysql数据类型
数值类型 MySQL的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数。许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且MySQL 允许我们指定数值字段中的值是否有正负之分或者用零填补。 表列出了各种数值类型以及它们的允许范围和占用的内存空间。类型大小范围(有符号)范围(无符号原创 2015-07-06 09:54:07 · 530 阅读 · 0 评论 -
mysql结果缓存
Mysql 查询缓存查询缓存的作用就是当查询接收到一个和之前同样的查询,服务器将会从查询缓存种检索结果,而不是再次分析和执行上次的查询。这样就大大提高了性能,节省时间。1.配置查询缓存修改配置文件,修改[mysqld]下的query_cache_size和query_cache_type(如果没有则添加)。其中query_cache_size表示缓存的大小,而query_cache_t原创 2015-06-10 14:57:34 · 431 阅读 · 0 评论 -
mysql 字符集&校验规则
字符集,character set,就是一套表示字符的符号和这些的符号的底层编码;而校验规则,则是在字符集内用于比较字符的一套规则。下面我简单举个例子来说明一下:如在某个字符集“X”的A与a,他们的底层编码分别是A=0,a=100。这里符号“A”“a”和底层编码“0”“100”就是字符集的概念范围。假设我们要比较A与a的大小,我们得到a>A,因为我们是根据其底层编码进行比较的,这就是这个字符集“X原创 2015-06-30 15:26:12 · 4094 阅读 · 0 评论 -
Mysql日期函数大全
DAYOFWEEK(date) 返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准)mysql> select DAYOFWEEK('1998-02-03'); -> 3 WEEKDAY(date) 返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)。 mysql> select WEEKDAY('1997-10-04转载 2015-07-10 17:45:14 · 420 阅读 · 0 评论 -
函数相关参数 log_bin_trust_function_creators
Command-Line Format --log-bin-trust-function-creators Option-File Format log-bin-trust-function-creators Option Sets Variable Yes, log_bin_trust_function_creators Var原创 2015-09-09 12:45:21 · 1148 阅读 · 0 评论 -
MYSQL 创建用户
一, 创建用户: 命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明:username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. password - 该用户的登陆密码,密码可以为空,如原创 2015-09-10 15:33:16 · 397 阅读 · 0 评论 -
MySQL修改root密码的多种方法
方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');方法2:用mysqladmin mysqladmin -u root password "newpass" 如果root已经设置过密码,采用如下原创 2016-08-07 12:11:04 · 3008 阅读 · 0 评论 -
mysql 批量更新
今天有同事说他有批量更新的需求,一次更新1000条左右数据,问我有没有好的办法。他自己先用了replace语句发现,需要更新的字段更新了,但是其他字段变成默认值了。先看看replace(同事自己用的这个想实现批量更新,发现有问题):mysql> mysql> create table t1(id int,name1 varchar(30) default 'name1',nam原创 2016-09-28 10:22:35 · 410 阅读 · 0 评论 -
mysql表数据大小查询
1、查询某个表数据和其索引的大小select DATA_LENGTH+INDEX_LENGTH from information_schema.tables where table_schema='数据库名' and TABLE_NAME='表名称';2、查看每个库中数据和索引占用大小select TABLE_SCHEMA,concat( round(DATA_LENGTH/102原创 2016-09-27 15:15:27 · 577 阅读 · 0 评论 -
MySQL5.6 Innodb独立的undo tablespace
在MySQL5.6中开始支持把undo log分离到独立的表空间,并放到单独的文件目录下;这给我们部署不同IO类型的文件位置带来便利,对于并发写入型负载,我们可以把undo文件部署到单独的高速存储设备上. .1.使用有几个参数来控制该行为.# innodb_undo_tablespaces用于设定创建的undo表空间的个数,在Install db时初转载 2016-09-26 17:11:10 · 2810 阅读 · 1 评论 -
再说MySQL中的 table_id
【背景】最近线上一个实例出现了主从数据不一致的情况,也即从库丢失数据的情况。根本原因:"由于table_list->table_id为uint,而m_table_id为ulong,主库上assign的table map id 总是一直递增的当超过2^32后,备库出现溢出,导致row模式下备库对应table id的事件全部丢失,产生主备不一致。"【问题分析】一 table_id 介绍转载 2015-06-03 22:15:34 · 2420 阅读 · 0 评论 -
mysql实现oracle lag功能
create table test_table(id int,name varchar(30));insert into test_table select 1,'a1';insert into test_table select 2,'a2';insert into test_table select 3,'a3';insert into test_table select 4,'a4'原创 2016-08-23 18:33:29 · 962 阅读 · 1 评论 -
MySQL 开启FEDERATED 引擎
MySQL中针对不同的功能需求提供了不同的存储引擎。所谓的存储引擎也就是MySQL下特定接口的具体实现。 FEDERATED是其中一个专门针对远程数据库的实现。一般情况下在本地数据库中建表会在数据库目录中生成相应的表定义文件,并同时生成相应的数据文件。 但通过FEDERATED引擎创建的表只是在本地有表定义文件,数据文件则存在于远程数据库中(这一点很重要)。 通过这个引擎可以实现类转载 2016-05-12 17:03:35 · 581 阅读 · 0 评论 -
DBI 与 DBD
介绍PERL对数据库的支持广而且全,几乎所有的主流数据库都有与之相应的PERL模块支持。为了开发可在不同数据库上移植的PERL应用,DBI(DataBase Interface)模块应运而生,使用这个模块,应用只需使用统一的接口便能操作不同的数据库,真正实现了可移植;当然,这个DBI也配备有相应的开关来支持不同数据库的各种特性。DBI只是个抽象层,要实现支持不同的数据库,则需要在DBI之下原创 2016-03-06 23:10:55 · 1255 阅读 · 0 评论 -
MySQL 表添加字段 存储过程实现 IF NOT EXISTS
-- 创建表语句(对于已经存在的表不再建立)create table IF NOT EXISTS t1(id int not null);create table IF NOT EXISTS t2(id int not null);-- 添加字段存储过程(对于已经存在的字段不再添加)DROP PROCEDURE IF EXISTS p_alter_table;delimiter //原创 2015-11-16 15:43:32 · 15345 阅读 · 0 评论 -
MySQL删除二进制日志
1、查看二进制日志show binary logs;2、删除二进制日志语法PURGE { BINARY | MASTER } LOGS { TO 'log_name' | BEFORE datetime_expr }删除到某个时间前PURGE BINARY LOGS BEFORE '2008-04-02 22:46:26';删除到某个日志前(不包括指定的日原创 2015-10-27 20:59:58 · 543 阅读 · 0 评论 -
MySQL 日期时间函数
DAYOFWEEK(date) 返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准)mysql> select DAYOFWEEK('1998-02-03'); -> 3 WEEKDAY(date) 返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)。 mysql> select WEEKDAY('1997-10-04原创 2015-09-23 17:32:32 · 285 阅读 · 0 评论 -
MySQL 临时目录
MySQL使用环境变量TMPDIR的值作为保存临时文件的目录的路径名。如果未设置TMPDIR,MySQL将使用系统的默认值,通常为/tmp、/var/tmp或/usr/tmp。如果包含临时文件目录的文件系统过小,可对mysqld使用“—tmpdir”选项,在具有足够空间的文件系统内指定1个目录。 在MySQL 5.1中,“—tmpdir”选项可被设置为数个路径的列表,以循环方式使用。在Uni原创 2015-09-22 14:54:08 · 762 阅读 · 0 评论 -
mysql Writing to net & max_allowed_packet
mysql> show processlist;......| 196875 | root | 192.168.60.150:38098 | shanghai_test | Query | 0 | NULL | INSERT INTO gcjl_hphm_info (hphm, hpzl, hpys, clpp, clzpp, clnk原创 2015-09-25 17:04:25 · 1257 阅读 · 0 评论 -
FLUSH语法
HOSTS用于清空主机缓存表。如果有的主机更改了IP号或如果您得到了错误信息Host host_name is blocked,则您应该刷新主机表。当在连接到MySQL服务器时,如果对于一个给定的主机,接连出现错误“多于max_connect_errors”,此时,MySQL会假定出现了错误,并阻止主机后续的连接申请。刷新主机表允许主机尝试再次连接。请参见A.2.5节,“主机的host_nam原创 2015-06-29 18:04:00 · 578 阅读 · 0 评论 -
得到插入时的自增主键ID值 LAST_INSERT_ID()
mysql> USE test;Database changedmysql> CREATE TABLE t ( -> id INT AUTO_INCREMENT NOT NULL PRIMARY KEY, -> name VARCHAR(10) NOT NULL -> );Query OK, 0 rows affected (0.09 sec)原创 2015-06-25 18:11:38 · 768 阅读 · 0 评论 -
InnoDB存储引擎的参数详解及优化
innodb_data_home_dir这是InnoDB表的目录共用设置。如果没有在 my.cnf 进行设置,InnoDB 将使用MySQL的datadir目录为缺省目录。如果设定一个空字串,可以innodb_data_file_path中设定绝对路径。innodb_data_file_path单独指定数据文件的路径与大小。数据文件的完整路径由 innodb原创 2015-03-23 23:56:39 · 529 阅读 · 0 评论 -
MyISAM和InnoDB的索引在实现上的不同
1 MyISAM只把索引载入内存,数据缓存依赖于操作系统,InnoDB把索引和数据都载入内存缓冲 ,在存放方面,共享表空间: 某一个数据库的所有的表数据,索引文件全部放在一个文件中,默认这个共享表空间的文件路径在data目录下。 默认的文件名为:ibdata1 初始化为10M。独占表空间: 每一个表都将会生成以独立的文件方式来进行存储,每一个表都有一个.frm表描原创 2015-03-23 23:48:24 · 949 阅读 · 0 评论 -
如何合理的使用blob字段
对于一些公司,通常通过mysql blob来存储文件。对于Mysql 55以后,文件格式采用了Barracuda的新格式,这种格式有个明显的功能就是可以压缩每一行,根据key_block_size来选择需要压缩的大小,对于Blob的大文件而言,无疑为mysql使用上有多了一个选择!来看一个压缩的案例:mysql> create table comptest(b mediumblob);转载 2015-03-22 22:38:14 · 1291 阅读 · 0 评论 -
MySQL drop table操作风险
最近,一个同事因为有数百表已经废弃,所以打算将表drop掉已回收掉使用的空间。其实每张表的数据量很小,但是我们看到每次drop的时候大量的query 被堵塞了,用户反映超时报错的情况,所以这里对这个问题做了一个小的探讨(本帖的讨论基于mysql5.1) 。 由于product 环境大部分情况下设置的innodb_file_per_table=1,所以每个table一个tbs,每次删除转载 2015-03-22 12:54:38 · 803 阅读 · 0 评论 -
mysql中varchar与char的区别
char是一种固定长度的类型,varchar则是一种可变长度的类型 char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些填补出来的空格字符将被去掉)在varchar(M)类型的数据列里,每个值只占用刚好够用的字节再加上一个用来记录其长度的字节(即总长度为L+1字节,字符数超过255 +2,多出的字节记录长度).原创 2015-03-21 22:45:54 · 428 阅读 · 0 评论 -
参数 sync_binlog、innodb_support_xa、innodb_flush_log_at_trx_commit
从官方解释来看,innodb_support_xa的作用是分两类:第一,支持多实例分布式事务(外部xa事务),这个一般在分布式数据库环境中用得较多。第二,支持内部xa事务,说白了也就是说支持binlog与innodb redo log之间数据一致性。今天的重点是讨论第二类内部xa事务。首先我们需要明白为什么需要保持binlog与redo log之间数据一致性,这里分两个方面来解释:原创 2015-03-11 00:17:08 · 888 阅读 · 0 评论 -
mysql buffer pool里的三种链表和三种page
buffer pool是通过三种list来管理的1) free list2) lru list3) flush list buffer pool中的最小单位是page,在innodb中定义三种page1) free page :此page未被使用,此种类型page位于free链表中2) clean page:此page被使用,对应数据文件中的一个页面,但是页面没有被修改原创 2015-03-21 15:23:40 · 492 阅读 · 0 评论 -
SHOW SLAVE STATUS详解
一、简介 本文主要介绍mysql 主从复制中,通过命令“show slave status",显示的结果的信息解释。 官网连接:http://dev.mysql.com/doc/refman/5.5/en/show-slave-status.html二、正常状态的信息*************************** 1. row *************原创 2015-03-21 12:49:20 · 773 阅读 · 0 评论