MySql logo

SQL文件怎么打开?重要的数据库文件

SQL文件是网站服务器里面保存的网站运行所需的数据库文件。通常情况下Mysql数据库使用的就是SQL文件,特别是基于阿帕奇Web服务器的PHP网站会用到Mysql数据库。特别是国外用户在网站开发时,采用Mysql的比较多。那么SQL文件怎么打开呢?

如果您需要打开SQL文件,您可以通过双击让电脑自动用默认程序打开,如果无法打开您就打开一个记事本,然后将SQL文件拖入记事本中就可以打开了。不过这样打开基本上是没什么意义的,虽然也能看到一些数据,但中文网站用的SQL文件打开后可能会出现大量乱码的情况。而且通常作为网站Mysql数据库备份的SQL文件其体积可能比较大,几MB到上百MB都有可能。这时使用记事本打开SQL文件可能会出现卡死现象,这时可以采用UE等专业文本编辑器打开。

穆童特别提醒:SQL文件很有可能是重要的网站数据库文件,不建议大家使用记事本或其他不知来历的查看工具对SQL文件进行编辑。以免导致网站重要数据的丢失或数据库文件出错。如果您的确需要编辑最好导入到数据库中进行编辑或者请教专业网站开发人员。

MySql logo

自己的MySQL数据库优化及逻辑优化技巧总结

之前学习了MySQL数据库优化,刚好项目中用到了,而且交了篇文档,和大家分享下。之前学的大型项目缓存系统memcached没用上,最近学习java安全。

一、MySQL优化

1、索引的使用

数据库索引的建立对于查询是十分快速的,MySQL基于B+数的索引查询,500000条记录只需要4次查询就能定位到改行。所以建立合适的索引是十分必要的,并且可以通过系统的记录查看索引建立的优劣。
可以通过命令show GLOBAL status like ‘Com%’;查看结果(每秒操作次数)

数据库索引优化

 

可以看出查询是很多,修改很少,索引建立的合适

2、优化SQL查询语句

2.1慢查询

由于查询很多,所以要提高查询速度,用户的习惯是2~3秒希望看到结果,所以我们将慢查询时间设为1s,并且将所有慢查询的语句及详细信息记录下来,以供分析和优化。
设置如下,在/etc/mysql/my.cnf文件中设置
log-slow-queries=/var/lib/mysql/slowquery.log
long_query_time =1
查看MySQL记录的日志如下:

mysqld, Version: 5.0.51a-3ubuntu5.8-log ((Ubuntu)). started with:
Tcp port: 3306 Unix socket: /var/run/mysqld/mysqld.sock
Time Id Command Argument
# Time: 120228 11:15:01
# User@Host: root[root] @ [10.11.18.38]
# Query_time: 43 Lock_time: 0 Rows_sent: 0 Rows_examined: 0
use tvmarket;
SELECT A.App_ID ,A.LogoUrl ,A.UploadTime,H.ScreenShotUrl FROM T_App A ,T_App_Info B , T_Dev F , T_App_Screen_Shot H , T_App_Type_PK D, T_App_Type C where A.UploadTime > “20120221160603″ order by A.UploadTime desc;
# Time: 120228 11:24:59
# User@Host: root[root] @ [10.11.18.38]
# Query_time: 203 Lock_time: 0 Rows_sent: 0 Rows_examined: 0
SELECT A.App_ID ,A.LogoUrl ,A.UploadTime,B.AppName,C.TypeName,H.ScreenShotUrl,F.Score FROM T_App A , T_App_Info B , T_Dev F,T_App_Screen_Shot H , T_App_Type_PK D, T_App_Type C where A.UploadTime > “20120221160603″ order by A.UploadTime desc;

可以看出这两条查询十分缓慢,因此可以锁定该语句进行更改及优化。

2.2部分SQL优化

2.2.1去文件排序

可以通过Explain+SQL语句以及Extend+SQL查看SQL语句执行的表连接顺序、连接方式、是否用到索引、是否需要全表扫描以及是否有中间临时表和文件排序信息。
文件排序是最慢的,文件排序一定要去除,而且尽量去除全表扫描,分析SQL语句
SQL目的:查询根据开发者的ID查询该开发者的所有状态的应用数目
EXPLAIN SELECT COUNT(APP_ID) AS NUM,State FROM T_App WHERE DEV_ID = 1484 GROUP BY State
得到结果:

去文件排序

以上SQL语句用到了文件排序,优化后的SQL语句

SELECT COUNT(APP_ID) AS NUM,State FROM T_App WHERE DEV_ID = 1484 GROUP BY State ORDER BY NULL;

分析结果,去掉了

部分SQL优化:去文件排序

同理,只要是用到了SQL聚合函数而且要进行分组的,MySQL默认要进行文件排序,只要加ORDER BY NULL就可以不排序了,但有些是根据需要进行排序的就不用加了,比如对分组结果进行时间排序。

2.2.2去全表扫描

有些全表扫描是必须的,但是只需要查询一条结果满足条件,通过添加LIMIT 1即可消除全表扫描。

2.2.3尽量去除SELECT *

二、逻辑优化

判断某一个用户注册时的邮箱是否已经使用过了。错误的逻辑:将邮箱和查询所有注册过的邮箱比较。正确的逻辑:根据邮箱去数据库表中查询是否存在返回结果。

插入一条记录判断是否插入成功,错误的逻辑:再去查询这条记录判断返回结果是否为空。正确的逻辑:返回插入的记录的结果是真是假即可。

后记:这只是优化的一部分,比较简单和常见的手法,更多内容参考:MySQL 5.1参考手册-优化

linux系统

LNMP(linux+nginx+mysql+php)

一直没有时间整理LNMP的安装配置,今天有时间来整理下亲身安装LNMP的过程:

我是通过yum安装的。

1.安装nginx:nginx的安装就不多扯了

2.安装Mysql:#yum install mysql-server -y

3.安装php:#yum install php -y

4.安装spawn-fcgi:之前是需要通过安装lighttpd来得到spawn-fcgi进行 FastCGI 模式下的管理工作的,现在spawn-fcgi已成为独立项目了。下载spawn-fcgi:#wget http://www.lighttpd.net/download/spawn-fcgi-1.6.0.tar.gz,然后通过编译安装得到spawn-fcgi。

5.修改nginx配置文件

server {
        listen       80;
        server_name  192.168.18.142;

        #charset koi8-r;
         #access_log  logs/host.access.log  main;

        location / {
            root   /usr/html;
            index  index.php index/ index.htm;}
        location ~ .*\.php5?$ {
           root           /usr/html;
           fastcgi_pass   127.0.0.1:9000;
           fastcgi_index  index.php;
           fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
           include        fastcgi_params;}

          error_page   500 502 503 504  /50x/;
          location = /50x/ {
            root   html;}
}
6.启动mysql:service mysqld start
7.启动php+fastcgi:/usr/local/spawn-cgi/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C(大写) 5 -f /usr/bin/php-cgi,当然这之前我们的nginx已经启动了。
 当然这只是简单粗略的讲了下自己的安装配置过程,等于开始起跑,接下来的过程是困难而有漫长的。。

本文由812120608.qzone.qq.com奉献,版权归原作者所有。
如若复制、转载请注明原文地址:http://mtoou.info/lnmp-linux-nginx-mysql-php/