mysql
robertXin
不为写代码而写代码
展开
-
LNAMP Linux+Apache+Nginx+MySQL+PHP
LNAMP Linux+Apache+Nginx+MySQL+PHP环境配置最近看到很多人都在LNAMP,变得越来越流行了,干脆将我之前自己做的重新优化了一边,更新了新版程序,并降低了55%的内存消耗,速度和负载都比0.1版提高了不少。LNAMP 介绍:Centos 5.5 32bitApache 2.2.17Nginx 0.8.54MySQL 5.1.55PHP 5.2.1...原创 2012-04-27 19:21:21 · 139 阅读 · 0 评论 -
实战mysql存储程序与定时器
需求:一个庞大的日志表,现每天做定时统计一天的总数,放另一个表中,方便查看,运营。 旧方案:用脚本写好程序,用linux的crontab定时执行。 本文重点,用mysql定时器定时执行存储程序。 第一步:编写存储程序(需了解基本的存储程序的语法) create procedure inproc()begin declare done int defaul...2013-10-09 16:31:36 · 177 阅读 · 0 评论 -
实战mysql权限管理
注:如果你认为你的数据不重要,可以不用往看下。 root,它具有至高无上的权限,不是任何情况都要用root!!!状况1:给一个菜鸟root权限。状况2:给业务开发人员以root权限。状况3:给负责单个库的DBA以root权限。 可能你没有遇到到这三种状况,但事故总会发出,一旦把数据弄丢,把数据库down掉,为时已晚,所以权限的设置是必须的!!! mysql中的...2013-09-28 15:23:31 · 113 阅读 · 0 评论 -
mysql不使用索引特例
今天发现mysql的一个奇怪的事情:表结构: 表索引: 应该可以看到ver是varchar类型,并且有索引的。搜索一条没有的数据:type居然是all,rows是整个表,什么情况,没有使用索引?再搜索一条有的数据:正常 !! 去除explain,上种没有的要1秒多,下种只要0.0,说明上种确实没有用索引!! 这是个毛线情况!我自认为对索引还是有一定功...2013-09-18 11:46:21 · 120 阅读 · 0 评论 -
mysql查询语句in和exists二者的区别和性能影响
还记得一次面试中被人问到in 和 exists的区别,当然只是草草做答,现在来做下分析。mysql中的in语句是把外表和内表作hash 连接,而exists语句是对外表作loop循环,每次loop循环再对内表进行查询。一直大家都认为exists比in语句的效率要高,这种说法其实是不准确的。这个是要区分环境的。 如果查询的两个表大小相当,那么用in和exists差别不大。 如果两...原创 2012-09-12 15:41:21 · 408 阅读 · 0 评论 -
MyISAM,Memory,InnoDB
MyISAM:表锁:表级锁。注意不要让它成为瓶颈不支持自动数据恢复:服务器崩溃或停电后,就应该在使用之前检查和执行可能的修复。不支持事务:实际上,MyISAM甚至不保证单个命令会完成。如果在多行UPDATE的中途有错误发生,一些行会被更新,而另外一些则不会。只有索引被缓存在内存中:MyISAM中缓存了MYSQL进程内部的索引,并保存在键缓冲区。操作系统缓存了表的数据,因此在MYSQ...原创 2012-09-07 15:37:08 · 96 阅读 · 0 评论 -
mysql索引之聚集索引
聚集索引不是一种单独的索引类型,而是一种存储数据方式。其具体细节依赖于实现方式,但是InnoDB的聚集索引实际上在同样的结构中保存了B-Tree索引和数据行。当表有聚集索引的时候,它的数据行实际保存在索引的叶子页中。术语“聚集”指实际的数据行和相关的键值都保存在一起。每个表只能有一个聚集索引,因为不能一次把行保存在两个地方。(但是,覆盖索引可以模拟多个聚集索引)当前,SolidDB...原创 2012-09-07 14:22:40 · 341 阅读 · 0 评论 -
mysql索引之前缀索引和索引选择性
有时需要索引很长的字符列,它会使索引变大而且变慢。一个策略就是模拟哈希索引。但是有时这也不够好,那?通常可以索引开始的几个字符,而不是全部值,以节约空间并得到好的性能。这使索引需要的空间变小,但是也会降低选择性。索引选择性是不重复的索引值和表中所有行的比值。高选择性的索引有好处,因为它使mysql在查找匹配的时候可以过波掉更多的行。唯一索引的选择率为1,为最佳值。如果索引BLOG和...原创 2012-08-30 18:15:38 · 292 阅读 · 0 评论 -
mysql索引之哈希索引
哈希索引(Hash Index)建立在哈希表的基础上,它只对使用了索引中的每一列的精确查找有用。对于每一行,存储引擎计算出了被索引的哈希码(Hash Code),它是一个较小的值,并且有可能和其他行的哈希码不同。它把哈希码保存在索引中,并且保存了一个指向哈希表中的每一行的指针。在mysql中,只有memory存储引擎支持显式的哈希索引。如果多个值有相同的哈希码,索引就会把行指针以链表的方式...原创 2012-08-29 18:56:33 · 336 阅读 · 0 评论 -
mysql索引之隔离列
如果在查询中没有隔离索引的列,mysql通常不会使用索引。“隔离“列意味着它不是表达式的一部分,也没有位于函数中。例如:mysql>select id from test where id +1 =5;我们能轻易地看出where子句中的id等4,但是mysql却不会帮你求解方程,这取决于自己。我们应该养成简化where子句的习惯,这样就会把被索引的列单独放在比较运算符的一...原创 2012-08-29 10:20:54 · 183 阅读 · 0 评论 -
选择优化的数据类型 (五)日期和时间类型
mysql提供了两种相似的数据类型:DATETIME和TIMESTAMP.对于很多应用,它们都能工作,但是在某些情况下,一种会好于另一种DATETIME:从1001到9999年,精度为秒。它把日期和时间封装到一个格式为YYYYMMDDHHMMSS的整数中,与时区无关。使用了8字节存储空间。在默认情况下,mysql以一种可排序的,清楚的格式显示DATETIME值,例如2012-08-28...原创 2012-08-28 18:02:02 · 123 阅读 · 0 评论 -
MyISAM并发调优
MyISAM在某些条件下允许并发插入下读取,并且它让你可以“高度”某些操作,以尽可能少地阻止工作。MyISAM如何删除和插入行??删除操作不会重新安排整个表,它们只是把行标记为已经删除,并且在表中留下了一些“洞”。MyISAM在可能的情况下会优先使用这些“洞”,为插入复用空间。如果表是完整的,它就会把新的行拼接在表的最后。即使MyISAM有表级别的锁,它也能在读取的同时把行拼接...原创 2012-11-28 14:12:49 · 155 阅读 · 0 评论 -
你不知道的order by
order by我们用过不知多少次了,但真的完全了解它的用法吗?一。按照列名排序这是最简单的方法,select e from e_test order by e;select e,d from e_test order by e,d;select e from e_test order by e,d;这三个语句都可以正常运行.当e相等时,按d排序,而且排序的列并不一定需要出...原创 2012-08-22 17:13:43 · 243 阅读 · 0 评论 -
选择优化的数据类型 (四)BLOG与TEXT
BLOG与TEXT唯一的区别就是BLOG保存是二进制数据,没有字符集和排序规则,但是TEXT有字符集和排序规则。mysql对BLOG和TEXT列的排序方式的其他类型不同,它不会按照字符的完整长度进行排序,而只是按照max_sort_length规定的毅若干个字节进行排序。如果只按照开始的几个字符排序,就可以减少max_sort_length的值或使用order by substing(co...原创 2012-08-21 17:31:02 · 187 阅读 · 0 评论 -
选择优化的数据类型 (三)CHAR与VARCHAR
VARCHAR和CHAR(这里假设使用的是InnoDB或MyISAM) VARCHAR:它能比固定长度的类型占用的更少的存储空间,因为它只占用了自己需要的空间(也就是说较短的值占用的空间就较少)。例外情况是使用ROW_FORMAT=FIXED创建MyISAM表,它为每行使用固定长度的空间,可能会造成浪费。 varchar使用额外1到2个字节来存储值长度。如果列的的最大长度小...原创 2012-08-21 17:10:57 · 144 阅读 · 0 评论 -
选择优化的数据类型 (二)整数与实数
一。整数 TINYINT,SMALLINT,MEDIOINT,INT,BIGINT存储空间分别为:8,16,24,32,64范围:-2^(n-1) 到2^(n-1)-1Unsigned 属性不允许负数,范围:0-2^(n-1)-1 signed与Unsigned类型占用的存储空间是一样的,性能也一样,因此可以根据实际的情况选择合适的类型。 你的选择将会决定mys...原创 2012-08-21 16:12:10 · 184 阅读 · 0 评论 -
选择优化的数据类型 (一)基本原则
最基本的原则:一。更小通常更好更小的数据类型通常更快,因为它们使用了更少的磁盘空间,内存和CPU缓存,而且需要的CPU周期也更少。但是要确保不会低估要保存的值。二。简单就好越简单的数据结构,需要的CPU周期就越少。例如:比较整数的代价小于比较字符,因为字符集和排序规则使字符比较复杂。这有两个例子,一是应该使用mysql内建的类型来保存日期和时间,而不是使用字符串。二是应该使用整...原创 2012-08-21 15:46:32 · 2370 阅读 · 0 评论 -
ON DUPLICATE KEY UPDATE重复插入时更新
mysql当插入重复时更新的方法:第一种方法: 示例一:插入多条记录假设有一个主键为 client_id 的 clients 表,可以使用下面的语句: INSERT INTO clients(client_id,client_name,client_type)SELECT supplier_id,supplier_name,'advertising'FROM s...原创 2012-07-23 11:51:51 · 762 阅读 · 0 评论 -
实战mysql分区(PARTITION)
前些天拿到一个表,将近有4000w数据,没有任何索引,主键。(建这表的绝对是个人才)这是一个日志表,记录了游戏中物品的产出与消耗,原先有一个后台对这个表进行统计。。。。。(这要用超级计算机才能统计得出来吧),只能帮前人填坑了。。。。 数据太大,决定用分区来重构。如果你发现是empty,说明你的mysql版本不够,分区至少要5.1 下面针对业务查询,决定用时间来做range...2013-10-12 16:09:09 · 1284 阅读 · 0 评论