分类目录归档:数据库

3天时间,被垃圾蜘蛛爬虫耗尽了10G的流量

unknown robot (identified by empty user agent string) 10.25 g 从3月1日到3日,仅仅3的时间。 联系主机托管方HomeZZ.com 的管理员,经过查找后,发现主机上其他账户正常,不是主机问题。 查看日志后,发现有来自 208.101.54.6-static.reverse.softlayer.com (208.101.54.6) 的访客,消耗流量最多10g左右,于是禁用ip,目前站点流量正常。 在robots.txt里面也禁禁止了很多垃圾机器人来抓取本站。 这次被攻击,HomeZZ的管理员又给了2G的流量,十分感谢,推荐其他朋友也来这里购买虚拟主机。 这里放出几个邀请码,有需要的自取: https://homezz.com/account/reg.php?c=NO1HA17K https://homezz.com/account/reg.php?c=F1RU0FB2 https://homezz.com/account/reg.php?c=HE050ICN

发表在 数据库 | 3 条评论

mysql 中 时间和日期函数

转自:http://www.cnblogs.com/redfox241/archive/2009/07/23/1529092.html 一、MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +–——————-+ | now() | +–——————-+ | 2008-08-08 22:20:46 | +–——————-+ 除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数: current_timestamp() ,current_timestamp ,localtime() ,localtime ,localtimestamp – (v4.0.6) ,localtimestamp() – (v4.0.6) 这些日期时间函数,都等同于 now()。鉴于 now() 函数简短易记,建议总是使用 now() 来替代上面列出的函数。 1.2 获得当前日期+时间(date + time)函数:sysdate() sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。看下面的例子就明白了: mysql> select now(), sleep(3), now(); +–——————-+———-+———————+ … 继续阅读

发表在 数据库 | 标签为 | 留下评论

分享 国家、省(州)、城市 数据库SQL

有需要的就下载吧。 谁有现成的省、市、县数据库SQL文件? 下载地址: CountryProvinceCity.zip

发表在 数据库 | 留下评论

MySQL主从服务器的一些技巧

作者:老王 问题:主从服务器表类型的选择 一般的共识是主服务器使用innodb,从服务器使用myisam,以便各尽其能。 问题:主从服务器字段类型的选择 字段类型对于分页等操作有很大影响。主服务器一般是innodb,因为不涉及查询,所以可以使用varchar等来存储字符串来节省空间,从服务器一般是 myisam,因为涉及查询,所以必须在char和varchar之间仔细权衡,没有varchar, text, blob字段的表是静态表,反之是动态表,静态表的检索效率要比动态表好若干倍,一般来说,所有涉及大结果集的查询都应该尽可能保证在静态表上完成,这里 说一个例子:比如说常见的articles表有title(varchar), body(text)等字段,在做文章列表的时候,因为不是静态表,所以查询不会很快,下面开始重构解决方案:把原来的articles表拆分成 subjects表和contents表,title字段设置为一个足够的char类型放在subjects表里,body字段还保持是text类型放到 contents表里,subjects和contents表之间的关系是一对多,这样,顺带着也方便的实现了多页文章的功能,而且更重要的是在查询文章 列表的时候,操作都是在subjects静态表里完成,效率肯定会比前一种方案提升很多。 问题:主从服务器NOW()函数造成数据不一致 假设在主服务器上执行一条INSERT …. VALUES ( …, NOW()),那么在从服务器上也会同样执行一条的SQL语句,但是一来主从服务器各自的时间设置可能就不一致,二来主从服务器间的SQL同步也可能存在 时间上的的延迟,这样,NOW()在两台服务器上的结果就可能不一致。解决方法是显而易见的,就是不要使用NOW(),时间的计算在应用程序里完成。这里 介绍一个额外的小技巧:在PHP里如果想获得当前时间的时间戳,不要用time(),而应该使用$_SERVER[‘REQUEST_TIME’] (PHP版本大于5.1有效),这样少做了一次系统调用,更有效率。 问题:主从服务器读写分离时读操作失败 先重现一下问题:比如说添加一条新数据,添加成功后根据last_insert_id跳转到新添加数据的浏览页面。在此过程中添加新数据的操作是在主服务 器上完成的,浏览新数据的操作实在从服务器上完成的,不过由于主从服务器间SQL同步存在延迟,所以当使用last_insert_id在从服务器上查询 的时候,从服务器很可能还没有还没来得及同步到此记录,所以读操作失败。解决思路也不复杂,在代码里加入一个缓存层(可以使用memcached),新添 加的数据都顺手放到缓存层里一份,新数据的读操作也先查询缓存层,这样就不会再有读操作失败的问题了,当然删除或者更新数据的时候也要顺带着处理好缓存数 据,可以使用观察者模式来搞定。不过这样缓存方案只限于读取单一的记录,对于读取列表的记录的情况,则是无效的。 问题:主从服务器索引是否有必要保持一致 一般都是利用主从服务器完成读写分离,从服务器上进行读操作,主服务器进行写操作,这样的话,主服务器上仅保留主键,外键,唯一索引等必要的索引即可,以 便保持数据合法性,而对于那些原本用于优化SELECT操作的索引,可以全部删除,如此的话主服务器的写操作效率会提升很多。 转自:http://hi.baidu.com/thinkinginlamp/blog/item/5d72dd5469b1885fd0090633.html

发表在 数据库 | 留下评论

mysql 分组 排序 取时间最大的一条记录

mysql 分组 group by, 排序 取每条记录中,时间最大的一条记录 SELECT A.* FROM test A, (SELECT aid, MAX(day) max_day FROM test GROUP BY aid) B WHERE A.aid = B.aid AND A.day = B.max_day ORDER BY a.install DESC 以下是 test 表,测试sql CREATE TABLE IF NOT … 继续阅读

发表在 数据库 | 留下评论

DBA 数据库 db4 写入、查询测试

可以先看看这里的简介 DBA数据库 (这里没有提到db4,现在应该使用db4) 安装: 打开php.ini 确定 php_dba.dll 已经载入。 之后就可以使用dba函数库了。 这个数据,就是简单的 key=>value模式,和memcache差不多。 写入和查询速度都是非常快的。 如果是本机简单测试,可以使用 inifile 模式。 不过正式服务器上,一定要使用db4模式读写,因为其他模式比较慢,inifile就更慢了,还没有fopen快,所以inifile只能测试。 现在测试一下dba数据库的写入速度 每条数据是1k,写入速度分别是:  10000条       1.71057009697 100000条      21.7869038582 1000000条    765.130697012 每条数据是2k,写入速度分别是:  10000条       1.13584280014 100000条      25.066011906 1000000条     704.676019907 每条数据是3k,写入速度分别是:  10000条       0.865121126175 100000条      24.7635490894 1000000条     745.992260933 每条数据是6k,写入速度分别是:  10000条       4.17641997337 100000条      … 继续阅读

发表在 数据库 | 留下评论