mysql中索引的基数是什么意思

mysql中索引的基数是什么意思?
今天在建一个表的索引是,突然发现这个问题。
在网上找了下,原文如下:
基数是数据列所包含的不同值的数量。

例如,某个数据列包含值1、3、7、4、7、3,那么它的基数就是4。也就是索引的列中不重复的数量。

索引的基数相对于数据表行数较高(也就是说,列中包含很多不同的值,重复的值很少)的时候,它的工作效果最好。

如果某数据列含有很多不同的年龄,索引会很快地分辨数据行。

如果某个数据列用于记录性别(只有”M”和”F”两种值),那么索引的用处就不大。

如果值出现的几率几乎相等,那么无论搜索哪个值都可能得到一半的数据行。在这些情况下,最好根本不要使用索引,因为查询优化器发现某个值出现在表的数据行中的百分比很高的时候,它一般会忽略索引,进行全表扫描。惯用的百分比界线是”30%”。

MYSQL中的普通索引,主健,唯一,全文索引区别

MYSQL索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。

 

总体分析

PRIMARY, INDEX, UNIQUE 这3种是一类

PRIMARY 主键。 就是 唯一 且 不能为空。

INDEX 索引,普通的

UNIQUE 唯一索引。 不允许有重复。

FULLTEXT 是全文索引,用于在一篇文章中,检索文本信息的。

MYSQL的索引类型:PRIMARY, INDEX,UNIQUE,FULLTEXT,SPAIAL 有什么区别?各适用于什么场合?

举个例子来说,比如你在为某商场做一个会员卡的系统。
这个系统有一个会员表
有下列字段:
会员编号 INT
会员姓名 VARCHAR(10)
会员身份证号码 VARCHAR(18)
会员电话 VARCHAR(10)
会员住址 VARCHAR(50)
会员备注信息 TEXT

那么这个 会员编号,作为主键,使用 PRIMARY
会员姓名 如果要建索引的话,那么就是普通的 INDEX
会员身份证号码 如果要建索引的话,那么可以选择 UNIQUE (唯一的,不允许重复)
会员备注信息 , 如果需要建索引的话,可以选择 FULLTEXT,全文搜索。

不过 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。
用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。

创建索引使用说明

普通索引

这是最基本的索引类型,而且它没有唯一性之类的限制。

创建索引,例如CREATE INDEX <索引的名字> ON tablename (列的列表);
修改表,例如ALTER TABLE tablename ADD INDEX [索引的名字] (列的列表);
创建表的时候指定索引,例如CREATE TABLE tablename ( […], INDEX [索引的名字] (列的列表) );
唯一性索引

这种索引和前面的“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一。

 

MYSQL主键:

MYSQL主键是一种唯一性索引,但它必须指定为“PRIMARY KEY”。

例如“CREATE TABLE tablename ( […], PRIMARY KEY (列的列表) ); ”。但是,我们也可以通过修改表的方式加入主键,例如“ALTER TABLE tablename ADD PRIMARY KEY (列的列表); ”。每个表只能有一个主键。

全文索引

MySQL从3.23.23版开始支持全文索引和全文检索。在MySQL中,全文索引的索引类型为FULLTEXT。全文索引可以在VARCHAR或者TEXT类型的列上创建。它可以通过CREATE TABLE命令创建,也可以通过ALTER TABLE或CREATE INDEX命令创建。对于大规模的数据集,通过ALTER TABLE(或者CREATE INDEX)命令创建全文索引要比把记录插入带有全文索引的空表更快。

单列索引与多列索引

创建索引,例如CREATE UNIQUE INDEX <索引的名字> ON tablename (列的列表);
修改表,例如ALTER TABLE tablename ADD UNIQUE [索引的名字] (列的列表);
创建表的时候指定索引,例如CREATE TABLE tablename ( […], UNIQUE [索引的名字] (列的列表)
);

centos系统vps硬盘挂载

快速挂载shell

wget -S http://117.34.74.114/check/check_fdisk
bash check_fdisk

#########################################

详细命令:

需要挂载的硬盘
disk='/dev/sdb'
需要挂载到的目录
dir='/www1'

新加硬盘/dev/sdb1
fdisk /dev/sdb
n
p
1
回车
回车
w

不重启认到硬盘
partprobe

把/dev/sdb1格式化成ext4
mkfs.ext4 /dev/sdb1

挂载/dev/sdb1到目录/www1
mkdir /www1
mount /dev/sdb1 /www1

写入fstab
echo "/dev/sdb1 /www1 ext4 defaults 0 0" >> /etc/fstab

Linux RAR 安装和使用

描述:Linux默认自带ZIP压缩,最大支持4GB压缩,RAR的压缩比大于4GB.
流程:下载 》安装 》 使用
————————————————– 下载
# wget http://www.rarsoft.com/rar_CN/rarlinux-3.9.3.tar.gz
–16:01:50– http://www.rarsoft.com/rar_CN/rarlinux-3.9.3.tar.gz
Resolving www.rarsoft.com… 217.70.129.242
Connecting to www.rarsoft.com|217.70.129.242|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 833828 (814K) [application/x-gzip]
Saving to: `rarlinux-3.9.3.tar.gz’

100%[=======================================>] 833,828 34.5K/s in 29s

16:02:22 (28.2 KB/s) – `rarlinux-3.9.3.tar.gz’ saved [833828/833828]

————————————————– 查看目录列表
# ls
rarlinux-3.9.3.tar.gz

————————————————– 解压 tar.gz
# tar -xzvf rarlinux-3.9.3.tar.gz
rar/
rar/readme.txt
rar/default.sfx
rar/whatsnew.txt
rar/license.txt
rar/order.htm
rar/rar
rar/unrar
rar/rar_static
rar/technote.txt
rar/rarfiles.lst
rar/makefile
rar/rar.txt

————————————————– 查看目录列表
# ls
rar
rarlinux-3.9.3.tar.gz

————————————————– 切换目录
# cd rar

————————————————– 编译文件
# make
mkdir -p /usr/local/bin
mkdir -p /usr/local/lib
cp rar unrar /usr/local/bin
cp rarfiles.lst /etc
cp default.sfx /usr/local/lib

————————————————– 安装编译文件
# make install
mkdir -p /usr/local/bin
mkdir -p /usr/local/lib
cp rar unrar /usr/local/bin
cp rarfiles.lst /etc
cp default.sfx /usr/local/lib

————————————————– 执行rar帮助命令
# rar –help
rar: /lib/libc.so.6: version `GLIBC_2.7′ not found (required by rar)

————————————————– 添加全局命令
# cp -f rar_static /usr/local/bin/rar
cp: overwrite `/usr/local/bin/rar’? y

————————————————– 即可访问 rar 命令
# rar –help
RAR 3.93 Copyright (c) 1993-2010 Alexander Roshal 15 Mar 2010
Shareware version Type RAR -? for help

Usage: rar <command> -<switch 1> -<switch N> <archive> <files…>
<@listfiles…> <path_to_extract\>

<Commands>
x Extract files with full path

————————————————– 解压所有文件包括路径
# rar x filename.rar

电信的上传下载速度

西安电信光网提速不假 上传降速是真

西安电信官方微博宣布,将为具备光网接入的社区用户免费升级带宽到20M,一时间引起了广大用户的广泛关注和拍手欢迎。不过,最近不少社区 用户却发现,自己家的带宽在从8M免费升级到20M后,上传的速度却降低到了仅为150K左右,也就是1M宽带的水平。

具体链接

http://www.cnbeta.com/articles/164972.htm

Windows系统VPS服务器之- IIS 权限设置

我们知道通常自己电脑的Windows系统是用管理员权限(Administrator)访问局域网电脑(如打印机共享等)是用来宾(Guest)权限。所以不同的途,Windows已内置了不同的用户权限。很多用户在给网站设置写入权限的时候不知道应该添加哪个用户.其实,当您的Windows服务器或VPS安装了IIS组件以后系统用户里面就多了一个 Internet 来宾帐户,IIS来宾账号 IUSR_XXX(其中XXX是计算机名),如图

1

 

当我们在IIS添加建立一个网站后(默认的权限就是IUSR_XXX)如图:

2

 

所以,系统内置的 IUSR_XXX 用户密码请不要去修改如果修改了,每添加完一个网站都需要到上图地方修改密码进行同步,否则你新建的网站将没有权限被访问。   我们以安装dedecms程序为例按照程序内的说明给相应文件及文件夹对应权限,程序的说明是指在FTP里面修改权限,一般是虚拟主机的用法,而Windows独立服务器或VPS是直接在远程操作加权限。

3

 

我们以data目录为例进行说明,这一步很多童鞋不容易掌握,要看仔细了。IIS里网站文件夹鼠标右键选择权限,或者到硬盘的网站目录找到文件夹操作都是一样的。

4

 

添加-》高级-》立即查找-》找到”IUSR_XXX” 双击即可添加。

5

 

一路点“确定”,最后将回到下图界面,我们看程序说明,data目录需要有读取权限和写入修改权限,如图进行勾选,最后确定,大功告成。

6

 

 

mysql主从配置记录

准备工作:

主数据库:192.168.1.77

从数据库:192.168.1.78

2台机器上编译安装msyql

在主服务器上操作:

在mysql的配置文件/etc/my.cnf中有添加如下参数。

[mysqld]
log-bin=mysql-bin

#启动二进制文件
server-id=1

#服务器ID

重启mysql服务。

/etc/init.d/mysqld restart

在msyql中添加授权账号

mysql -uroot -ppy.10isp.com

#登陆到mysql

>GRANT REPLICATION SLAVE ON *.* to 'py'@'192.168.1.78' identified by '10isp';

#授权py用户密码为10isp,从ip:192.168.1.78上访问主数据库

>flush privileges;

#刷新权限

>show master status;

#查看主数据库状态

###

+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 106      |              |                  |
+------------------+----------+--------------+------------------+

###

#此处的FilePosition 在从数据库上配置时需要用到

在从服务器上操作:

在mysql的配置文件/etc/my.cnf中有添加如下参数。

[mysqld]
log-bin=mysql-bin

#启动二进制文件
server-id=10

#服务器ID(和主数据库id不一样)

重启mysql服务。

/etc/init.d/mysqld restart

mysql -uroot -ppy.10isp.com

#登陆到mysql

>change master to master_host='192.168.1.77',master_port=3306,master_user='py',master_password='10isp',master_log_file='mysql-bin.000001',master_log_pos=106;

#在从数据库上配置主数据库的信息ip:192.168.1.77账号:py密码10isp

>start slave;

#开启从数据库

检查从服务器复制功能状态

>show slave status\G;

###

Slave_IO_Running: Yes
#此状态必须YES
Slave_SQL_Running: Yes
#此状态必须YES
###

#############################################

主从服务器测试:

主服务器Mysql,建立数据库,并在这个库中建表插入一条数据:

mysql> create database py;
Query OK, 1 row affected (0.00 sec)

mysql> use py;
Database changed

mysql> create table py_tb(id int(3),name char(10));
Query OK, 0 rows affected (0.00 sec)

mysql> insert into py_tb values(001,'panyan');
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+——————–+
| Database               |
+——————–+
| information_schema |
| py                            |
| mysql                     |
| test                          |
+——————–+
4 rows in set (0.00 sec)

从服务器Mysql查询:

mysql> show databases;

+——————–+
| Database                |
+——————–+
| information_schema |
| py                             | #py库已经被同步了
| mysql                     |
| test                          |
+——————–+
4 rows in set (0.00 sec)

mysql> use py
Database changed
mysql> select * from py_tb; #可以看到在主服务器上新增的具体数据
+——+——+
| id | name |
+——+——+
| 1 | panyan|
+——+——+
1 row in set (0.00 sec)

##################

记录实际运行中遇到的问题

问题1: Last_Errno: 1062

###

mysql的主从同步需要先完整转移数据
关闭主数据库的写入

FLUSH TABLES WITH READ LOCK;
然后查看当前数据库的状态

show master status;
然后从数据库开启同步

stop slave;

mysql>change master to master_host=’192.168.1.250′, master_user=’root’,
master_password=’10isp.com’,
master_port=3306,
master_log_file=’mysql-bin.000001′,
master_log_pos=00006323;

start slave;

开启主数据库的写入

unlock tables; 解锁
回到从库 查看
show slave status \G

###

问题2: 手动重启主数据库

###

mysql数据库主从
mysql主从数据库问题,如果主库重启,从库是否就自动断了?谢谢回答
建议重启的时候在从机上运行
slave stop;
主机重启完再开启从机
slave start;

###

tar打包、压缩与解压缩到指定目录的方法

tar在linux上是常用的打包、压缩、加压缩工具,他的参数很多,折里仅仅列举常用的压缩与解压缩参数

 

参数:

-c :create 建立压缩档案的参数;

-x : 解压缩压缩档案的参数;

-z : 是否需要用gzip压缩;

-v: 压缩的过程中显示档案;

-f: 置顶文档名,在f后面立即接文件名,不能再加参数

 

举例: 一,将整个/home/www/images 目录下的文件全部打包为 /home/www/images.tar

[root@xoaocom ~]# tar -cvf /home/www/images.tar /home/www/images ← 仅打包,不压缩

[root@xoaocom ~]# tar -zcvf /home/www/images.tar.gz /home/www/images ← 打包后,以gzip压缩

 

在参数f后面的压缩文件名是自己取的,习惯上用tar来做,如果加z参数,则以tar.gz 或tgz来代表gzip压缩过的tar file文件

 

举例: 二,将 /home/www/images.tar.gz 解压到/home/www下面

[root@xoaocom ~]# cd /home/www

[root@xoaocom ~]# tar -zxvf /home/images.tar.gz

 

解压到指定的目录

[root@xoaocom ~]# tar -zxvf /home/images.tar.gz -C /指定目录

 

解包到指定的目录

tar xvf filename.tar -C /指定目录