mysql全文本搜索,中文全文搜索问题
[ 2015-04-02 12:54:08 | 作者: admin ]
1、首先建立一个用于全文搜索的字段:search_key 并建立全文搜索的索引
2、因为默认不支持中文,需要将相关中文转拼音,之间用空格分开即可
3、搜索的时候采用 WHERE MATCH(note_text) Against('+rabbit +bait' IN BOOLEAN MODE) 方式
需要注意:
1、mysql配置文件中指定长度为2或1,(my.ini或my.cnf) ft_min_word_len= 1
该值可以在phpmyadmin中查看
阅读全文…
2、因为默认不支持中文,需要将相关中文转拼音,之间用空格分开即可
3、搜索的时候采用 WHERE MATCH(note_text) Against('+rabbit +bait' IN BOOLEAN MODE) 方式
需要注意:
1、mysql配置文件中指定长度为2或1,(my.ini或my.cnf) ft_min_word_len= 1
该值可以在phpmyadmin中查看
show variables like 'ft_min_word_len';
2、修改ft_min_word_len后重启mysql服务 service mysql restart ,然后重新建立全文字段search_key的索引 [code][/code]...阅读全文…
[慢查优化]慎用MySQL子查询,尤其是看到DEPENDENT SUBQUERY标记时
[ 2015-03-20 13:05:42 | 作者: admin ]
很早发现这个现象,但不明就里,原来是重复执行A表倍数的查询,难怪这种查询的类型奇慢无比
http://www.cnblogs.com/zhengyun_ustc/archive/2013/11/29/slowquery3.html
写在前面的话:
在慢查优化1和2里都反复强调过 explain 的重要性,但有时候肉眼看不出 explain 结果如何指导优化,这时候还需要有一些其他基础知识的佐助,甚至需要了解 MySQL 实现原理,如子查询慢查优化。
看到 SQL 执行计划中 select_type 字段中出现“DEPENDENT SUBQUERY”时,要打起精神了!
——MySQL 的子查询为什么有时候很糟糕——
引子:这样的子查询为什么这么慢?
下面的例子是一个慢查,线上执行时间相当夸张。为什么呢?
阅读全文…
http://www.cnblogs.com/zhengyun_ustc/archive/2013/11/29/slowquery3.html
写在前面的话:
在慢查优化1和2里都反复强调过 explain 的重要性,但有时候肉眼看不出 explain 结果如何指导优化,这时候还需要有一些其他基础知识的佐助,甚至需要了解 MySQL 实现原理,如子查询慢查优化。
看到 SQL 执行计划中 select_type 字段中出现“DEPENDENT SUBQUERY”时,要打起精神了!
——MySQL 的子查询为什么有时候很糟糕——
引子:这样的子查询为什么这么慢?
下面的例子是一个慢查,线上执行时间相当夸张。为什么呢?
SELECT gid,COUNT(id) as count
...阅读全文…
关于innoDB表的mysql数据库备份
[ 2015-01-09 13:57:39 | 作者: admin ]
当然最理想的办法是mysqldump,如果服务器挂了,只有数据库目录文件,那么只好用覆盖的办法
1、确保原数据库和目标数据库2个mysql版本一致
2、关闭mysql服务,将data目录下面的数据库目录和ibdata文件覆盖
3、重启mysql服务
1、确保原数据库和目标数据库2个mysql版本一致
2、关闭mysql服务,将data目录下面的数据库目录和ibdata文件覆盖
3、重启mysql服务
mysql数据库结构比较工具
[ 2014-09-30 13:48:43 | 作者: admin ]
用常用的mysql gui工具就可以干这个啊,例如mysql workbench啊navicat啊(一般用它)
如果要比较简单的:
http://dbsynch.g6.cz/ (在线)
https://github.com/dsyph3r/php-mysql-diff/ (php)
https://bitbucket.org/stepancheg/mysql-diff/ (scala)
楼上那个用meld也不错
有个软件 dbForge Schema Compare for MySQL ,用起来不错
如果要比较简单的:
http://dbsynch.g6.cz/ (在线)
https://github.com/dsyph3r/php-mysql-diff/ (php)
https://bitbucket.org/stepancheg/mysql-diff/ (scala)
楼上那个用meld也不错
有个软件 dbForge Schema Compare for MySQL ,用起来不错
MYSQL建议列属性尽量为NOT NULL
[ 2014-07-21 09:06:00 | 作者: admin ]
mysql列建议列是非null的。说是如果是允许null的列,对索引会有影响(索引不会包括有NULL值)。
原文如下:
尽量避免NULL:应该指定列为NOT NULL,除非你想存储NULL。在MySQL中,含有空值的列很难进行查询优化。
因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或者一个空串代替空值。
怎么理解呢?
---------------------------------------------
先看空值跟null的区别。mysql官方:
“NULL columns require additional space in the row to record whether their values are NULL. For MyISAM tables, each NULL column takes one bit ...
阅读全文…
原文如下:
尽量避免NULL:应该指定列为NOT NULL,除非你想存储NULL。在MySQL中,含有空值的列很难进行查询优化。
因为它们使得索引、索引的统计信息以及比较运算更加复杂。你应该用0、一个特殊的值或者一个空串代替空值。
怎么理解呢?
---------------------------------------------
先看空值跟null的区别。mysql官方:
“NULL columns require additional space in the row to record whether their values are NULL. For MyISAM tables, each NULL column takes one bit ...
阅读全文…
mysql数据库增量备份,利用二进制日志的时间
[ 2014-05-26 13:11:45 | 作者: admin ]
innodb的热备份工具收费;(pass)
冷备份:(好像也可以在不停服务器的时候进行热备份,读操作无所谓!)
1、关闭mysql
2、备份data文件架下的ibdata(数据文件)、ib_logfile(日志文件)、对应的数据库文件夹(表结构)和my.ini文件
(数据库配置文件。)
3\mysqldump数据导出,现在使用的Ems客户端只是一种GUI操作而已, --single-transaction参数使得导出操作不影响其它客户端操作(适合做整体数据备份,和备份文件的方式差不多)
4从日志文件恢复,可以进行时间点的恢复.前提是启动时打开binary logging;(适合做增量数据备份。)
a\在my.ini中增加
log-bin=localhost-bin
启动二进制日志文件。
b\对数据库的一系列更新操作将加上时间戳之后进入二进制日志文件。
c\虽然增加二进制日志文件有1%左右的...
阅读全文…
冷备份:(好像也可以在不停服务器的时候进行热备份,读操作无所谓!)
1、关闭mysql
2、备份data文件架下的ibdata(数据文件)、ib_logfile(日志文件)、对应的数据库文件夹(表结构)和my.ini文件
(数据库配置文件。)
3\mysqldump数据导出,现在使用的Ems客户端只是一种GUI操作而已, --single-transaction参数使得导出操作不影响其它客户端操作(适合做整体数据备份,和备份文件的方式差不多)
4从日志文件恢复,可以进行时间点的恢复.前提是启动时打开binary logging;(适合做增量数据备份。)
a\在my.ini中增加
log-bin=localhost-bin
启动二进制日志文件。
b\对数据库的一系列更新操作将加上时间戳之后进入二进制日志文件。
c\虽然增加二进制日志文件有1%左右的...
阅读全文…
mysqldump 导出某个数据某个表部分查询内容,条件查询和恢复
[ 2014-05-26 13:08:33 | 作者: admin ]
mysqldump -u用户名 -p密码 数据库名 表名 --where="筛选条件" > 导出文件路径
例子:
从test数据库的test_data表中导出id大于100的数据到 /tmp/test.sql 这个文件中
mysqldump -uroot -p123456 test test_data --where=" id > 100" > /tmp/test.sql
mysql -uroot -p123456 tm < tm_050519.sql
mysql远程服务器备份数据到本机、从本机向远程数据库恢复备份数据
将网上的数据表备份到本机:
C:\mysql\bin\mysqldump u 用户名 -h 主机地址 --port 端口号 -p 数据库名 网上表名>本机文件名.sql
从网上恢复到本机的备份文件必须通过命令符的方式导入本机数据库,不能通过 load data......的方式:
...
阅读全文…
例子:
从test数据库的test_data表中导出id大于100的数据到 /tmp/test.sql 这个文件中
mysqldump -uroot -p123456 test test_data --where=" id > 100" > /tmp/test.sql
mysql -uroot -p123456 tm < tm_050519.sql
mysql远程服务器备份数据到本机、从本机向远程数据库恢复备份数据
将网上的数据表备份到本机:
C:\mysql\bin\mysqldump u 用户名 -h 主机地址 --port 端口号 -p 数据库名 网上表名>本机文件名.sql
从网上恢复到本机的备份文件必须通过命令符的方式导入本机数据库,不能通过 load data......的方式:
...
阅读全文…
mysql自动增量备份的实例方法(本地备份与远程备份)
[ 2014-05-26 12:58:52 | 作者: admin ]
1、本地备份
编写自动备份脚本:
vim /var/lib/mysql/autobak
内容如下:
保存退出。
chmod -777 /var/lib/mysql/autobak
crontab -e
00 00 * * * /var/lib/mysql/autobak
每天晚上凌晨自动执行autobak脚本。
/etc/init.d/crontab restart
手动执行一下脚本,看看效果。
./var/lib/mysql/autobak
ls /data/home/mysqlbak
查看下文件大小
...
阅读全文…
编写自动备份脚本:
vim /var/lib/mysql/autobak
内容如下:
cd /data/home/mysqlbak
rq=` date +%Y%m%d `
/usr/local/mysql/bin/mysqldump sqldb --flush-logs -uroot -p123456 --opt > 777city_$rq.sql
rq=` date +%Y%m%d `
/usr/local/mysql/bin/mysqldump sqldb --flush-logs -uroot -p123456 --opt > 777city_$rq.sql
保存退出。
chmod -777 /var/lib/mysql/autobak
crontab -e
00 00 * * * /var/lib/mysql/autobak
每天晚上凌晨自动执行autobak脚本。
/etc/init.d/crontab restart
手动执行一下脚本,看看效果。
./var/lib/mysql/autobak
ls /data/home/mysqlbak
查看下文件大小
...
阅读全文…