mysql
文章平均质量分 59
SnowRomance
这个作者很懒,什么都没留下…
展开
-
死锁
死锁是 innodb 事务型引擎才会出现的情况,发生死锁后,innodb 一般都能自动检测到,并使一个事务释放锁并回退,另一个事务获得锁,继续完成事务。但在涉及外部锁,或涉及表锁的情况下, innodb 并不能完全自动检测到死锁,这需要通过设置锁等待超时参数innodb_lock_wait_timeout 来解决。几种避免死锁的常用方法:1.在应用中,如果不同的程序会并发存取多个表原创 2016-07-20 15:05:41 · 268 阅读 · 0 评论 -
select * from Table into outfile '/路径/文件名'
select * from Table into outfile '/路径/文件名'fields terminated by ','enclosed by '"'lines terminated by '\r\n'(1)路径目录必须有读写权限777(2)文件名必须唯一(3)fields terminated by ','必须存在,否则打开的文件的列在同一的单元格中出现转载 2016-07-20 15:04:21 · 3695 阅读 · 0 评论 -
恢复和复制对 innodb 锁机制的影响
mysql 是通过 binlog 记录实现数据库的恢复跟复制的,复制其实就是 slave mysql 不断做基于 binlog 的恢复特点:1)mysql 的恢复是 sql 语句级的,也就是重新执行 binlog 中的sql 语句,而 oracle 数据库是基于数据库文件块的2)mysql binlog 是按照事务提交的先后顺序记录的,恢复也是按这个顺序进行的。而oracle 是按照系原创 2016-07-20 15:04:02 · 283 阅读 · 0 评论 -
间隙锁 (Next-Key 锁)
1).对于范围条件查询而言, innodb 不仅会对范围条件之内存在的数据加锁,也会对范围之内不存在的数据加锁select * from emp where empid > 100 for update; 其中 empid 在表中的数据有 1,2...100,101对于 empid > 101 的 数据也会加锁,这个锁就是 “间隙锁”2)innodb 除了通过范围条件加锁时使用间原创 2016-07-20 15:00:08 · 459 阅读 · 0 评论 -
读写锁
myisam:读锁:所有会话能进行读,不能进行 insert, update, delete ,别的会话等待。当前会话 unlock table 的时候,别的会话可以进行 insert,update,delete 。写锁:只有当前会话可以进行 insert, update, delete, select .别的会话等待读锁获取需要对别名也进行读锁获取lo原创 2016-07-20 14:59:11 · 210 阅读 · 0 评论 -
load 导入数据的优化
myisam:alter table tbl_name disable keys;loading the dataalter table tbl_name enable keys;innodb:set unique_checks=0 关闭唯一性校验set autocommit=0 关闭自动提交原创 2016-07-20 14:56:14 · 290 阅读 · 0 评论 -
慢查询
1.启动的时候 用 --log-slow-queries[=file_name] ,mysqld 写一个包含所有执行时间超过 long_query_time 秒的 sql 语句的日志文件2.慢查询日志在查询结束以后才记录,所以在应用反映执行效率出现问题的时候查询慢查询日志并不能定位问题,可以使用 show processlist 命令查看当前 mysql 在进行的线程,包括线程的状态,原创 2016-07-20 14:55:54 · 186 阅读 · 0 评论 -
锁阻塞
1.使用show processlist查看不靠谱;2.直接使用show engine innodb status查看,无法判断到问题的根因;3.开启innodb_lock_monitor后,再使用show engine innodb status查看,能够找到锁阻塞的根因。原创 2016-07-20 14:53:06 · 290 阅读 · 0 评论 -
存储过程和函数
创建存储过程或函数需要 create routine 权限,修改或删除存储过程或函数需要 alter routine 权限,执行存储过程或函数需要 execute 权限1.存储过程中 用 delimiter $$ 来定义 结束符DELIMITER $$create procedure xxx(IN , IN , OUT)SQL SECURITY INVOKERBEGIN原创 2016-07-20 14:52:25 · 201 阅读 · 0 评论 -
视图
视图中有 with [local/ cascaded] check option create or replace view payment_view as select payment_id, amount from payment where amount with check option;create or replace view payment_view1原创 2016-07-20 14:51:29 · 195 阅读 · 0 评论 -
字符集
字符集设置四个级别:服务器级,数据库级,表级,字段级服务器级:1.my.cnf 配置[mysqld]default-character-set=gbk2.启动选项mysqld --default-character-set=gbk3.编译的时候./configure --with-charset=gbk修改字符集并不能将已有的数据按照新的字符集进原创 2016-07-20 14:50:52 · 1614 阅读 · 0 评论 -
查看数据库支持哪些存储类型
查看数据库支持哪些存储类型1.show engines \G2.show variables like 'have%';innodb 自动增长列必须是索引,如果是组合索引必须是组合索引 的 第一列constraint xxx foreign key (country_id) refrences country (country_id) on delete restr原创 2016-07-20 14:50:18 · 2350 阅读 · 0 评论 -
mysql 优化
1.show variables;服务器静态参数值2.show status;服务器动态运行状态信息也可以在操作系统下直接查看mysql -uroot variables;mysql -uroot status;了解某个参数的具体信息mysql --verbose --help | moremyisam:key_buffe原创 2016-07-20 15:06:06 · 381 阅读 · 0 评论 -
Mysql数据库分布式事务XA详解
XA事务简介XA 事务的基础是两阶段提交协议。需要有一个事务协调者来保证所有的事务参与者都完成了准备工作(第一阶段)。如果协调者收到所有参与者都准备好的消息,就会 通知所有的事务都可以提交了(第二阶段)。Mysql 在这个XA事务中扮演的是参与者的角色,而不是协调者(事务管理器)。Mysql 的XA事务分为内部XA和外部XA。 外部XA可以参与到外部的分布式事务中,需要应用层介入作为协调者转载 2016-07-20 15:06:37 · 508 阅读 · 0 评论 -
磁盘 I/O 优化
RAID (Redundant Array of Inexpensive Disks)就是 “廉价磁盘冗余阵列”。就是磁盘阵列。RAID 就是按照一定策略将数据分布到若干物理磁盘上,这样不仅增强了数据存储的可靠性,而且可以提高数据读写的整体性能,因为通过分布实现了数据的 “并行” 读写如何选取 RAID 级别:数据读写都很频繁,可靠性要求也很高,最好选择 RAID原创 2016-07-20 15:10:09 · 329 阅读 · 0 评论 -
mysql cluster
mysql cluster 安装完毕后,首先管理节点1.在服务器 192.168.7.187 的 /home/zzx2/ 下创建目录 mysql-cluster ,并在目录中创建配置文件 config.inimkdir /home/zzx2/mysql-clustercd /home/zzx2/mysql-clustertouch config.ini2.根据这里的测试原创 2017-05-22 17:44:13 · 1062 阅读 · 2 评论 -
wait_timeout和interactive_timeout区别
wait_timeout -- 指的是MySQL在关闭一个非交互的连接之前所要等待的秒数interactive_time -- 指的是mysql在关闭一个交互的连接之前所要等待的秒数(交互连接如mysql gui tool中的连接) 对性能的影响:wait_timeout:(1)如果设置大小,那么连接关闭的很快,从而使一些持久的连接不起作用(2)如果设置太大,容易造成连接打转载 2017-05-22 17:40:43 · 1743 阅读 · 0 评论 -
MySQL分表处理的实现方法
MySQL分表处理用于处理海量的数据库,下面就为您详细介绍MySQL分表处理的实现方法,希望对您能够有所启迪。面对海量数据的表的时候,我们需要对它进行分表处理,我是按月份分的表,即每月都要建立一张表比如 table_2010_04,table_2010_05,table_2010_06......您可以根据自己的需要,可以根据时间和不同的字段以及 类型来分表。我按月分表是因为我只需要查询每原创 2017-05-22 17:40:20 · 1175 阅读 · 0 评论 -
mysql 常见问题
1.磁盘空间不足:myisam :首先停服务,然后修改配置文件的数据文件路径,然后将源文件建立符号链接到新的磁盘innodb:修改innodb_data_file_path=/home/data1:2000M;/home1/data2:2000M:autoextend2.DNS 反向解析show processlist 出现:这种进程越来越多,并且不会消原创 2017-05-22 17:40:02 · 775 阅读 · 0 评论 -
切换主从服务器
1.首先要确保所有的从数据库都已经执行了 relay log 中的全部更新,在每个从服务器上,执行 stop slave IO_THREAD ,然后检查 show processlist 的输出,直到看到状态是 Has read all relay log,表示更新都执行完毕2.在从数据库 S1 上,执行 STOP SLAVE 停止从服务器,然后 RESET MAST原创 2017-05-22 17:38:28 · 1508 阅读 · 0 评论 -
复制
log-slave-updates 配置从服务器是否将更新操作写二进制日志,跟 --logs-bin 参数一起用master-connect-retry设置与主服务器断开连接后重试的时间间隔read-only设置从数据库只读从服务器同步到主服务器的 POSselect MASTER_POS_WAIT('mysql-bin.000039',原创 2017-05-22 17:34:31 · 313 阅读 · 0 评论 -
mysql 权限与安全
FILE 权限可以 load data infile...PROCESS 权限可以 show processlist 其中包括了修改密码 processSUPER 权限可以执行 kill 命令一、MERGE 存储引擎潜藏的安全漏洞1.用户A 赋予表T 的权限给用户 B2.用户B 创建一个包含 T 的 MERGE 表,做各种操作3.用户 A 收回对 T 的权限原创 2017-05-22 17:34:09 · 309 阅读 · 0 评论 -
备份与恢复
逻辑备份:mysqldump [options] db_name [tables]mysqldump [options] --databases DB1 [DB2 DB3]mysqldump [options] --all-database举例:1)备份所有数据库mysqldump -uroot -p --all-database > all.sql2)备份数原创 2017-05-22 17:33:16 · 391 阅读 · 0 评论 -
mysql 日志
错误日志:可以用 --log-error[=file_name] 选项来指定 mysqld 保存错误日志文件的位置。如果没有给定 file_name 值, mysqld 使用错误日志名host_name.err (host_name 为主机名)并默认在参数 DATADIR (数据目录)指定的目录中写入日志文件binlog 日志:--log-bin[=file_name]删除原创 2017-05-22 17:26:03 · 215 阅读 · 0 评论 -
mysql 工具
1.mysqlbinlog [option] log-files1(日志管理工具)option 选项:-d, --database=name: 指定数据库名称,只列出指定的数据库相关操作-o, --offset=#: 忽略掉日志中的前 n 行命令-r, --result-file=name: 将输出的文本格式日志输出到指定文件-s, --short-form: 显示简单格式,省原创 2016-07-20 15:15:33 · 305 阅读 · 0 评论 -
mysql 编译参数详解
1.--prefix=PREFIX:指定程序安装路径;2.--enable-assembler:使用汇编模式;(文档说明:compiling in x86 (and sparc) versions of common string operations, which should result in more performance. 汇编x86的普通操作符,可以提高性能)3.--ena转载 2016-07-20 15:11:11 · 358 阅读 · 0 评论 -
应用优化
1.使用连接池2.减少对 mysql 的访问select old, gender from users where userid = 231;select address from users where userid = 231;这两句跟 select old, gender, address from users where userid = 231;这个请求数原创 2016-07-20 15:10:36 · 230 阅读 · 0 评论 -
数据类型
1.字符数据类型 char ,varcharchar 类型在插入数据的时候会删除数据后面的空格,例如:'ab ' 最后会变成 'ab' 但是 varchar 不会删除2.二进制数据类型 binary , varbinarybinary(3) 在存储 'a' 的时候会在后面插入 \0\0 即变成 'a\0\0' 来存放在数据库中,用 16进制来表示就是 610000原创 2016-07-20 14:40:32 · 205 阅读 · 0 评论 -
Mysql 主键知识
当定义一个列为 zerofill ,并且该列的值小于定于的位数的时候,会在值的左边添加足够的 0,当该列被设定会 zerofill 的时候,该列已经成为了 unsign 数据类型,所以如果你定义一个 int(5)那么,可以插入数据1111111 ,显示正常当添加一列为 auto_increment 的时候,必须同时指定其为 not null,并且有且只有一个 auto_incr原创 2016-07-20 14:39:12 · 284 阅读 · 0 评论 -
mysql MyISAM 转 Innodb
01. mysqldump -u[user] -p[password] [databasename] > [dump_name] # 備份資料庫02. /usr/local/mysql/bin/mysqladmin -u root -p shutdown # 停止資料庫 或是將整個 mysql tar 起來也可以。(不過還是建議用 mysqldump 的方式備份)03. 建議转载 2016-03-18 11:01:08 · 475 阅读 · 0 评论 -
主从同步检查脚本
#!/bin/bashmysql_cmd="mysql -uroot -p1234567 -S /tmp/mysql.sock"errorno=(1158 1159 1008 1007 1062) #数值定义错误号 这些错误号要跳过while true;do array=(`$mysql_cmd -e ("show slave statu转载 2016-03-18 11:00:49 · 417 阅读 · 0 评论 -
MySQL 备份与恢复
目前 MySQL 支持的免费备份工具有:mysqldump、mysqlhotcopy,还可以用 SQL 语法进行备份:BACKUP TABLE 或者 SELECT INTO OUTFILE,又或者备份二进制日志(binlog),还可以是直接拷贝数据文件和相关的配置文件。MyISAM 表是保存成文件的形式,因此相对比较容易备份,上面提到的几种方法都可以使用。Innodb 所有的表都保存在同一个数转载 2016-03-18 11:00:28 · 232 阅读 · 0 评论 -
relay_log 相关参数
mysql> show variables like '%relay%';+---------------------------+----------------+| Variable_name | Value |+---------------------------+----------------+|原创 2016-03-18 10:59:57 · 7153 阅读 · 0 评论 -
mysql bin_log 配置
sync_binlog”:这个参数是对于MySQL系统来说是至关重要的,他不仅影响到Binlog对MySQL所带来的性能损耗,而且还影响到MySQL中数据的完整性。对于“sync_binlog”参数的各种设置的说明如下:sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来原创 2016-03-18 10:59:37 · 353 阅读 · 0 评论 -
mysql 创建 报表 slave
1.在每天12点前5分钟,停止 报表slave,确保不会再从 master 接收事件2.12点后,检查 master 上的二进制日志,找到 12 点前记录的最后一个事件3.记录该事件的 binlog 位置,然后启动 slave4.直到 slave 同步到整个位置后停止具体操作:1.用 Linux 计划任务停止 slave>stop sla原创 2016-03-18 10:59:13 · 593 阅读 · 0 评论 -
mysql 各个flush 操作
FLUSH flush_option [,flush_option],如果你想要清除一些MySQL使用内部缓存,你应该使用FLUSH命令。为了执行FLUSH,你必须有reload权限。flush_option 可以是下列任何东西:FLUSH HOSTS 这个用的最多,经常碰见。主要是用来清空主机缓存表。如果你的某些主机改变IP数字,或如果你得到错误消息Host ..转载 2016-03-18 10:58:49 · 1557 阅读 · 0 评论 -
MyISAM相关参数
MyISAM相关参数myisam_max_sort_file_size=100G # mysql重建索引时允许使用的临时文件最大大小myisam_sort_buffer_size=68Mkey_buffer_size=54M # Key Buffer大小,用于缓存MyISAM表的索引块。决定数据库索引处理的速度(尤其是索引读)(1G 内存——>256M)read_buf原创 2016-03-18 10:58:33 · 1825 阅读 · 0 评论 -
InnoDB相关参数
# InnoDB相关参数innodb_additional_mem_pool_size=3M # InnoDB用于存储元数据信息的内存池大小,一般不需修改innodb_flush_log_at_trx_commit =1 # 事务相关参数,如果值为1,则InnoDB在每次commit都会将事务日志写入磁盘(磁盘IO消耗较大),这样保证了完全的ACID特性。而如果设置为0,则表示事务原创 2016-03-18 10:58:19 · 309 阅读 · 0 评论 -
mysql 优化配置
Mysql 调优:MySQL调优可以从几个方面来做:1. 架构层:做从库,实现读写分离;2.系统层次:增加内存;给磁盘做raid0或者raid5以增加磁盘的读写速度;可以重新挂载磁盘,并加上noatime参数,这样可以减少磁盘的i/o;3. MySQL本身调优:(1) 如果未配置主从同步,可以把bin-log功能关闭,原创 2016-03-18 10:57:58 · 231 阅读 · 0 评论 -
mysql 基础配置
[mysqld]port=3306 # mysql服务端默认监听(listen on)的TCP/IP端口basedir="C:/Program Files/MySQL/MySQL Server 5.5/" # 基准路径,其他路径都相对于这个路径datadir="C:/Program Files/MySQL/MySQL Server 5.5/Data" # mysql数据库文原创 2016-03-18 10:57:28 · 395 阅读 · 0 评论