高性能MySql学习笔记(一)
高性能MySql学习笔记
1.针对应用建立自己的索引
URL查找例子
select * from tUrl where url='http://www.163.com';
以url(字符串)作行为索引会使得作为索引结构的B-Tree变大,可以移除url列上的索引,并添加一个url_crc索引列,
先建立表:
create tables tUrl(
id int unsigned NOT NULL auto_increment,
url varchar(255) NOT NULL,
url_crc int unsigned NOT NULL DEFAULT 0,
primary key(id)
);
通过以下方式查询:
mysql> select * from queryHash where url_crc=CRC32( 'http://www.163.com' ) and url='http://www.163.com' ;
1.url_crc列的索引性能较高
2.在有冲突的时候,再通过精确比较得到所需要列
3.如果冲突过多可以改由64位的hash, MD5()/SHA1(), 截取前16示例如下:
mysql> select conv( right ( md5('http://www.csdn.net'), 16), 16, 10) as hash64;
select conv( right ( md5('http://www.csdn.net'), 16), 16, 10) as hash64;
+---------------------+
| hash64 |
+---------------------+
| 9270541833456602998 |
+---------------------+
注:Maatkit( http://www.maatkit.org/)包含了一个用户自定义函数(UDF),实现了Fowler/Noll/Vo64位哈希函数,速度非常快。
上述方法缺点是要手工维护hash值,可以通过使用触发器维护,分别为insert/update添加触发器:
delimiter |
create trigger url_crc_ins before insert on tUrl for each row begin
set NEW.url_crc=crc32(NEW.url);
end;
|
create trigger url_crc_upd before update on tUrl for each row begin
set NEW.url_crc=crc32(NEW.url);
end;
|
delimiter ;
验证一下:
mysql> insert into tUrl(url) values( 'http://www.csdn.net' );
mysql> select * from tUrl;
+----+---------------------+------------+
| id | url | url_crc |
+----+---------------------+------------+
| 2 | http://www.csdn.net | 3
相关文档:
准备
ls /usr/local/src // 显示文件列表
ls | wc -l // 查看当前文件目录下文件的个数
gcc -v // 查看编译工具是否存在
rpm -qa|grep -i xxxx // 查看系统中是否已经安装了某软件的相关软件包
rpm -e --nodeps xxxx // 卸载软 ......
windows下:
解决办法:
1.检查你的Mysql目录有没有给系统的System用户权限。
2.删除掉你的 %WINDOWS%/my.ini 文件。
3.检查你的 c:/my.cnf 文件配置是否正确。
修改%windir%\my.ini,增加
[mysqld]
#设置basedir指向mysql的安装路径
basedir=D:\Program\Tools\mysql
datadir=D:\Program\Tools\mysql\data& ......
在生产应用中,某台“Nginx+PHP+MySQL”接口数据服务器,扮演的角色十分重要,如果服务器硬件或Nginx、MySQL发生故障,而 短时间内无法恢复,后果将非常严重。为了避免单点故障,我设计了此套方案,编写了failover.sh脚本,实现了双机互备、全自动切换,故障转移时间 只需几十秒。
一、双机互备、全自动切换方案 ......
MySQL索引通常是被用于提高WHERE条件的数据行匹配或者执行联结操作时匹配其它表的数据行的搜索速度。
MySQL也能利用索引来快速地执行ORDER BY和GROUP BY语句的排序和分组操作。
通过索引优化来实现MySQL的ORDER BY语句优化:
1、ORDER BY的索引优化。如果一个SQL语句形如:
SELECT [column1],[column2],…. fro ......