Mysql中count(*),DISTINCT的使用方法和效率研究
在处理一个大数据量数据库的时候
突然发现mysql对于count(*)的不同处理会造成不同的结果
比如执行
SELECT count(*) FROM tablename
即使对于千万级别的数据mysql也能非常迅速的返回结果
而对于
SELECT count(*) FROM tablename WHERE…..
mysql的查询时间开始攀升 阅读全文
PHP中文网,因为专业所以权威!
在处理一个大数据量数据库的时候
突然发现mysql对于count(*)的不同处理会造成不同的结果
比如执行
SELECT count(*) FROM tablename
即使对于千万级别的数据mysql也能非常迅速的返回结果
而对于
SELECT count(*) FROM tablename WHERE…..
mysql的查询时间开始攀升 阅读全文
大概使用MySQL的人,百分之九九以上的人会使用Autoincrement ID做主键,这是可以理解的,因为MySQL的自增ID效率很高,使用也很方便。那么剩下的百分之一的人使用什么做主键呢?可能是自己做的 KeyGenerator,也可能是我们下面要说的UUID。
据说在Oracle的圈子里,如果谁用自增ID做主键是要被鄙视的,主键最自然的选择就是UUID。我不了解Oracle,这些道听途说的结论是否 正确不做承诺。
唯一索引 记录不重复设置
用phpmyadmin查看你的数据库,设置为主键、选择唯一索引,是否允许重复与数据类型无关。
关键字UNIQUE把它定义为一个唯一索引.唯一性索引 和“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一。
以下的文章主要描述的是清理删除庞大的MySQL binlog的实际操作方案,我们是在MySQL master/slave架构的环境下对清理删除庞大的MySQL binlog进行操作,以下就是文章的具体内容描述。
问题:主库硬盘不足s
原因:MySQL的var下大量bin二进制log,200多个g啊
目标:安全删除MySQL binlog
方法:网上搜搜关键词“MySQL bin文件 删除”,还真有~~
相关语句: 阅读全文
做了mysql主从也有一段时间了,这两天检查磁盘空间情况,发现放数据库的分区磁盘激增了40多G,一路查看下来,发现配置好主从复制以来到现在的binlog就有40多G,原来根源出在这里,查看了一下my.cnf,看到binlog的size是1G就做分割,但没有看到删除的配置,在mysql里show了一下variables,
| mysql> show variables like ‘%log%’; 查到了 | expire_logs_days | 0 | |
这个默认是0,也就是logs不过期,这个是一个global的参数,所以需要执行
| set global expire_logs_days=8; |
1、Concat()函数1.1 MySQL的concat函数可以连接一个或者多个字符串,如
mysql> select concat(’10′);
+————–+
| concat(’10′) |
+————–+ 阅读全文
这段时间因为工作关系,研究到库存系统的开发问题,从这里出发我们考虑了一些有关库存信息中需要的操作和,可能遇到的事务处理问题。特别是关于数据表锁定问题,一旦出现并发现象的时候,我们如何保证数据的完整性,值得我们考虑。事务操作,要保证的三个原则性:
原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全部执行,要么全都不执行;
一致性(Consistent):在事务开始和完成时,数据都必须保持一致状态;
隔离性(Isolation):数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行;
持久性(Durable):事务完成之后,它对于数据的修改是永久性的,即使出现系统故障也能够保持。 阅读全文
做项目时由于业务逻辑的需要,必须对数据表的一行或多行加入行锁,举个最简单的例子,图书借阅系统。假设id=1的这本书库存为1,但是有2个人同时来借这本书,此处的逻辑为
Select restnum from book where id =1 ;
– 如果 restnum 大于 0 ,执行 update
Update book set restnum=restnum-1 where id=1 ;
Select restnum from book where id =1 ;
– 如果 restnum 大于 0 ,执行 update
Update book set restnum=restnum-1 where id=1 ; 阅读全文