mysql中的SQL分析工具
Another Look at MySQL 5.1's SQL Diagnostic Tools
http://dev.mysql.com/tech-resources/articles/mysql_51_diagnostic_tools.html 数据库的性能决定因素:
(1)数据库的设计
(2)SQL代码 可以用以下几种方法来解决一些性能问题:
(1)索引
(2)水平分区
(3)列适应的表
column-oriented dbms(http://en.wikipedia.org/wiki/Column-oriented_DBMS#Implementations)
一般表数据文件是按行存储,如:某一表被定义为id,name,desc,则按行存储为:
1,name1,desc1;2,name2,desc2;…
而按列存储为:
1,2;name1,name2;desc1,desc2;… 数据库性能分析方法:
Bottleneck analysis – what is my database, user community, and SQL code waiting on?
Workload analysis – who's logged on and what work are they performing?
Ratio analysis – what do rules-of-thumb statistics say about my performance? 相关的分析命令:
mysql日志分析慢查询日志,一般日志,错误日志
日志可以存在表中,也可存在数据文件中
指定日志存在哪:set global log_output='table'(CSV (comma separated value) engine) or 'file'
日志存的表:mysql.general_log(一般日志)和mysql.slow_log(慢查询日志)
指定日志存的文件:
SET GLOBAL general_log_file=’/tmp/general.log’;
SET GLOBAL slow_query_log_file=’/tmp/slow.log’;
开启/关闭慢查询日志:set global slow_query_log=1/0;
慢查询的threshold:set global long_query_time=1;(秒)
开启/关闭查询日志:set global general_log=1/0;
开启查询profile:set profiling=1;
显示所有profile:show profiles\G
相关文档:
create or replace procedure pro_insert_dbms
is
cid number;
cid_DDL number;
selectsql varchar2(1000);
ddlsql varchar2(1000);
row_count number;
nofrows integer;
lrowid & ......
一个最简单的代码段:
string sql = string.Format("select Consult_Info.CName,Consult_Record.RTime,Consult_Record.RContent,Emp_Info.EName,CMode.Mode from Consult_Info inner join Consult_Record on(Consult_Info.CID = Consult_Record.CID) inner join Emp_Info on(Emp_Info.EID=Consult_Record.EID) inner join ......
PL/SQL语言
1、可执行部分(BEGIN)
组成语句:
变量赋值语句。
流程控制语句。
数据查询、数据操纵、事务控制语句。
游标语句。
2、可执行部分,SQL语句的使用
在可执行部分,可以使用SQL语句,但是不是所有的SQL语句都可以使用。
可以使用的主要有:SELECT、INSERT、UPDATE、DE ......
1 MYSQL中的字符集概念
Mysql的字符集里有两个概念,一个是"Character set(字符集)",另一个是"Collations"。
1.1 Collations
Collations翻成中文是"校验",在网页开发的过程中,这个词汇,只在Mysql里使用,主要作用是指导Mysql对字符的比较,比如, ASCII字符集里,Col ......
select 1 from table;与select anycol(目的表集合中的任意一行) from table;与select * from table 从作用上来说是没有差别的,都是查看是否有记录,一般是作条件查询用的。select 1 from 中的1是一常量(可以为任意数值),查到的所有行的值都是它,但从效率上来说,1>anycol>*,因为不用查字典表。 ......