SQL语句如下
TRUNCATE TABLE '表名'
比delete快,同时释放了空间,不能按条件删除
delete未释放空间,可按条件删除
delete 数据可以回滚,truncate 不可恢复
Submitted by admin on 2010, September 4, 10:28 AM
SQL语句如下
TRUNCATE TABLE '表名'
比delete快,同时释放了空间,不能按条件删除
delete未释放空间,可按条件删除
delete 数据可以回滚,truncate 不可恢复
Submitted by admin on 2010, July 13, 5:35 PM
hackmysql.com推出的一款MySQL的日志分析工具
整体来说, 功能非常强大. 数据报表,非常有利于分析慢查询的原因, 包括执行频率, 数据量, 查询消耗等.
格式说明如下:
总查询次数 (queries total), 去重后的sql数量 (unique)
输出报表的内容排序(sorted by)
最重大的慢sql统计信息, 包括 平均执行时间, 等待锁时间, 结果行的总数, 扫描的行总数.
Count, sql的执行次数及占总的slow log数量的百分比.
Time, 执行时间, 包括总时间, 平均时间, 最小, 最大时间, 时间占到总慢sql时间的百分比.
95% of Time, 去除最快和最慢的sql, 覆盖率占95%的sql的执行时间.
Lock Time, 等待锁的时间.
95% of Lock , 95%的慢sql等待锁时间.
Rows sent, 结果行统计数量, 包括平均, 最小, 最大数量.
Rows examined, 扫描的行数量.
Database, 属于哪个数据库
Users, 哪个用户,IP, 占到所有用户执行的sql百分比
Query abstract, 抽象后的sql语句
Query sample, sql语句
除了以上的输出, 官方还提供了很多定制化参数, 是一款不可多得的好工具.
安装和使用也非常简单
安装:
tar zxf http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz
cd mysqlsla-2.03
perl Makefile.PL
make
make install
简单使用:
— Slow log: mysqlsla -lt slow slow.log
— General log: mysqlsla -lt general general.log
— Binary log: mysqlbinlog bin.log | mysqlsla -lt binary -
mysqlsla会自动判断日志类型,缺省会打印出前十条结果,可以通过类似“–top 100”的参数来修改,如果觉得每次输入麻烦,还可以建立一个配置文件“~/.mysqlsla”,在文件里写上:top=100,这样就不用每次都手动输入参数了。
Submitted by admin on 2010, July 10, 11:11 AM
如
100710 10:35:49 [ERROR] /www/servers/mysql/libexec/mysqld: Can't open file: './ix/ecm_sessions.frm' (errno: 24)
100710 10:35:49 [ERROR] /www/servers/mysql/libexec/mysqld: Can't open file: './ix/ecm_sessions.frm' (errno: 24)
100710 10:35:49 [ERROR] /www/servers/mysql/libexec/mysqld: Can't open file: './ix/ecm_sessions.frm' (errno: 24)
如果遇到“ERROR '...'未发现(errno: 23)”,“无法打开文件:... (errno: 24)”,或来自MySQL的具有errno 23或errno 24的其它错误,它表示未为MySQL服务器分配足够的文件描述符。你可以使用perror实用工具来了解错误编号的含义:
shell> perror 23
错误代码23:文件表溢出
shell> perror 24
错误代码24:打开文件过多
shell> perror 11
错误代码11:资源暂时不可用
这里的问题是,mysqld正试图同时打开过多的文件。你可以通知mysqld不要一次打开过多文件,或增加mysqld可用文件描述符的数目。
要想通知mysqld将一次打开的文件控制在较小的数目上,可降低table_cache系统变量的值(),从而减少表高速缓冲(默认值为64)。降低max_connections的值也能降低打开文件的数目(默认值为100)。
要想更改mysqld可用的文件描述符的数目,可在mysqld_safe上使用“--open-files-limit”选项或设置(自MySQL 3.23.30开始)open_files_limit系统变量。请参见5.3.3节,“服务器系统变量”。设置这些值的最简单方式是在选项文件中增加1个选项。请参见4.3.2节,“使用选项文件”。如果mysqld的版本较低,不支持设置打开文件的数目,可编辑mysqld_safe脚本。在脚本中有1个注释掉的行ulimit -n 256。你可以删除‘#’字符取消对该行的注释,更改数值256,以设置mysqld可用的文件描述符数目。
“--open-files-limit”和ulimit能够增加文件描述符的数目,但最高不能超过操作系统限制的数目。此外还有1个“硬”限制,仅当以根用户身份启动mysqld_safe或mysqld时才能覆盖它(请记住,在该情况下,还需使用“--user”选项启动服务器,以便在启动后不再以根用户身份继续运行)。如果需要增加操作系统限制的对各进程可用文件描述符的数目,请参阅系统文档。
注释:如果运行tcsh shell,ulimit不工作!请求当前限制值时,tcsh还能通报不正确的值。在该情况下,应使用sh启动mysqld_safe。
来自mysql手册 http://dev.mysql.com/doc/refman/5.1/zh/problems.html
此次修改了 max_connections,将其原来的500减小到200,正常
问题的原因,可能是其它人修改了配置,开始时连mysql都启动不了,在日志里,有比较多的如
100710 10:08:58 [ERROR] /www/servers/mysql-5.1.47/libexec/mysqld: Table './mysql/db' is marked as crashed and last (automatic?)
repair failed
100710 10:08:58 [ERROR] Fatal error: Can't open and lock privilege tables: Table './mysql/db' is marked as crashed and last (aut
omatic?) repair failed
开始以为是mysql的数据表文件坏了,且又修复不了,便重新安装了份mysql的库文件,再恢复相关的用户表,后可以启动了,但仍很多上面提示的 Can't open file,再google后,再调整,正常
Submitted by admin on 2010, February 23, 9:55 PM
源码编译,5.1, 5.0的都试过,系统是CentOS5.4
不管怎么编译,结果都是
[root@localhost mysql-5.1.44]# /usr/local/mysql/bin/mysql
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.44-log Source distribution
Segmentation fault
tail /var/log/messages
Feb 22 11:26:28 localhost kernel: mysql[2883]: segfault at fffffffff347c6c0 rip 000000000041c001 rsp 00007ffff347be80 error 4
Feb 22 11:36:24 localhost kernel: mysql[18627]: segfault at ffffffffcef603e0 rip 000000000041c001 rsp 00007fffcef5fba0 error 4
Feb 22 11:36:37 localhost kernel: mysql[18632]: segfault at ffffffffe0e70df0 rip 000000000041c001 rsp 00007fffe0e705b0 error 4
好奇怪,用系统自带的又行,而且,只是mysql客户端有问题,其它的一切正常,能启动,能用
早二三个月也遇到一次,但当时没具体深究原因,好像是ncurses原理,后也不知怎么弄好了
后安装ncurses库,再编译就可以了,估计上次也是,只是当时没有留意
Submitted by admin on 2009, April 23, 5:46 PM
http://database.51cto.com/art/200510/8434.htm
http://imysql.cn/node/56
http://yemaosheng.com/?p=86
setup
要求mysql的版本比较接近
master my.cnf
[mysqld]
log-bin
server-id=1
master
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
restart mysql;
FLUSH TABLES WITH READ LOCK;
tar zcvf mysql-snapshot.tar.gz .
cp tar.gz to slave
tar zxvf tar.gz
show master status;
UNLOCK TABLES;
slave my.cnf
[mysqld]
server-id=slave_id
slave
CHANGE MASTER TO MASTER_HOST='master_host_name',MASTER_USER='replication_user_name',MASTER_PASSWORD='replication_password',MASTER_LOG_FILE='recorded_log_file_name',MASTER_LOG_POS=recorded_log_position;
start slave;
Submitted by admin on 2009, March 26, 4:51 PM
含义如下:
aborted_clients 客户端非法中断连接次数
aborted_connects 连接mysql失败次数
com_xxx xxx命令执行次数,有很多条
connections 连接mysql的数量
Created_tmp_disk_tables 在磁盘上创建的临时表
Created_tmp_tables 在内存里创建的临时表
Created_tmp_files 临时文件数
Key_read_requests The number of requests to read a key block from the cache
Key_reads The number of physical reads of a key block from disk
Max_used_connections 同时使用的连接数
Open_tables 开放的表
Open_files 开放的文件
Opened_tables 打开的表
Questions 提交到server的查询数
Sort_merge_passes 如果这个值很大,应该增加my.cnf中的sort_buffer值
Uptime 服务器已经工作的秒数
提升性能的建议:
1.如果opened_tables太大,应该把my.cnf中的table_cache变大
2.如果Key_reads太大,则应该把my.cnf中key_buffer_size变大.可以用Key_reads/Key_read_requests计算出cache失败率
3.如果Handler_read_rnd太大,则你写的SQL语句里很多查询都是要扫描整个表,而没有发挥索引的键的作用
4.如果Threads_created太大,就要增加my.cnf中thread_cache_size的值.可以用Threads_created/Connections计算cache命中率
5.如果Created_tmp_disk_tables太大,就要增加my.cnf中tmp_table_size的值,用基于内存的临时表代替基于磁盘的
Submitted by admin on 2009, March 11, 7:48 PM
CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/servers/mysql --enable-assembler --with-mysqld-ldflags=-all-static --enable-thread-safe-client --with-extra-charsets=gb2312,gbk,utf8,latin1
#设置一下 CFLAGS 和 CXXFLAGS,尤其要注意打开 HAVE_DLOPEN 选项
CFLAGS='-O2 -DHAVE_DLOPEN -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector -param=ssp-buffer-size=4 -m64 -mtune=generic'
CXXFLAGS='-O2 -DHAVE_DLOPEN -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector -param=ssp-buffer-size=4 -m64 -mtune=generic'
./configure --prefix=/usr/local/mysql5137 --with-extra-charsets=gb2312,gbk,utf8,latin1 --enable-thread-safe-client \
--with-embedded-server --with-plugins=innobase,archive --with-big-tables --disable-shared --without-man \
--with-mysqld-ldflags=-all-static --with-named-curses-libs=/usr/lib/libncursesw.so.5
make;make install-strip
CC=gcc CFLAGS="-O2" CXX=gcc CXXFLAGS="-O2 -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/www/servers/mysql --with-extra-charsets=gb2312,gbk,utf8,latin1 --enable-thread-safe-client --with-embedded-server --with-plugins=innobase,archive --with-big-tables --disable-shared --with-named-curses-libs=/usr/lib/libncursesw.so.5
20100423
./configure '--prefix=/www/servers/mysql51' '--enable-assembler' '--enable-thread-safe-client' '--with-extra-charsets=gb2312,gbk,utf8,latin1' '--with-named-curses-libs=/usr/lib/libncursesw.so.5' '--without-debug' '--with-embedded-server'
CFLAGS="-O3 -march=pentiumpro" CXX=gcc CXXFLAGS="-O3 -march=pentiumpro -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/www/servers/mysql51 --enable-static --enable-assembler --enable-thread-safe-client --with-extra-charsets=gb2312,gbk,utf8,latin1 --with-named-curses-libs=/usr/lib/libncursesw.so.5 --without-debug --with-embedded-server --with-unix-socket-path=/tmp/mysql51.sock --with-pthread --without-innodb
--with-mysqld-ldflags=-all-static
Submitted by admin on 2009, February 3, 9:55 AM
在mysql表损坏时,用phpmyadmin or mysqlcheck 等修复,都提示 Table is already up to date.但数据表仍无法正常使用.
myisamchk --safe-recover db/table.MYI