mysql的BASE64编码和解码实现

刚好需要,找到了这个东西。mysql有MD5,AES,DES等加密函数,不过恰恰却没有BASE64编码解码函数。找到了原文:http://forums.mysql.com/read.php?10,404800,404800#msg-404800
http://wi-fizzle.com/downloads/base64.sql
下面的代码来自Gist https://gist.github.com/1724446

当然了,除非特殊需要,不推荐这么使用。如果技术够的话,可以写成UDF。
汉字等还需要注意编码

jmeter教程2-mysql测试

使用mysql自带的mysqlslap工具测试数据库的性能,命令行的方式并不太友好,这里我们仍然介绍下jmeter来测试mysql。Jmeter使用了JDBC技术,使得可以测试任何支持JDBC技术的数据库,包括mysql,oracle,pgsql,Mssql等。我们分步演示下jmeter测试mysql的步骤。
(1)    仍然是新建测试计划,在其下新建一个线程组。并设置并发为50,不循环。
(2)    配置JDBC。在线程组上点击右键,选择添加→配置元件→JDBC Connection Configuration。配置各项参数,其中Variable Name:可以随便填写,此处填写mysql。最主要的配置是Database  Connection Configuration.
Database URL:JDBC格式的数据库连接,每种数据库的URL都有所区别。Mysql的如下,jdbc:mysql://localhost:3306/test,test为数据库名称。
JDBC Driver class:JDBC驱动的名称
Username:数据库用户名
Password:数据库密码
其它配置项保持默认即可。
 2011-10-25_035256.png
添加了JDBC参数后,我们还需要添加mysql的JDBC驱动。因为jmeter并没有自带这一jar包。可以到mysql官方网站找到mysql的JDBC驱动,在“测试计划”中添加class path。如图所示:
 2011-10-25_041057.png
如果忘了这一步的话,将导致运行失败。
(3)添加JDBC请求。需要修改的参数包括:

阅读剩余部分...

MySQL Optimize Table

    Optimize Table是个好东西,很难说他能帮我们提高系统运行效率(具体的讨论可以到这里看:http://www.xaprb.com/blog/2010/02/07/how-often-should-you-use-optimize-table/),但明显的是可以帮我们回收更多的空间、减少碎片。
    官方是这么说的
OPTIMIZE TABLE should be used if you have deleted a large part of a table or if you have made many changes to a table with variable-length rows (tables that have VARCHAR, VARBINARY, BLOB, or TEXT columns). Deleted rows are maintained in a linked list and subsequent INSERT operations reuse old row positions. You can use OPTIMIZE TABLE to reclaim the unused space and to defragment the data file. After extensive changes to a table, this statement may also improve performance of statements that use the table, sometimes significantly.

1. 回收空间 Defragment

在InnoDB的维护过程中,我们总会遇到磁盘耗尽、或者InnoDB Tablespaces用完的情况。这时候,在考虑扩容等方案之前,最好先使用Optimize Table试试。如果你的表大字段(Text Blob Varchar),并且更新、删除较频繁的话,Optimize之后可能会腾出大量的空间。需要注意的是这仅仅是针对INNODB而言的

2. InnoDB 和 MyISAM

目前支持optimize命令的引擎有 MyISAM, InnoDB, and ARCHIVE,对于InnoDB,会将optimize命令映射为ALTER TABLE命令,该命令会重建数据表,更新索引统计信息、回收主键索引中空间。
     如果你的MySQL是有备库的,如果你只希望在主库上执行的话,那么可以加上关键字NO_WRITE_TO_BINLOG(或者LOCAL,意思完全相同)。


用mysqlslap进行mysql压力测试

mysqlslap是一个mysql官方提供的压力测试工具,通过模拟多个并发客户端访问mysql来执行测试,使用起来非常的简单。通过mysqlslap –help可以获得可用的选项。
下面我们就来看看一些比较重要的参数:
--defaults-file,配置文件存放位置
–create-schema,测试的schema,MySQL中schema也就是database
-concurrency,并发数
--engines,测试引擎,可以有多个,用分隔符隔开。
--iterations,迭代的实验次数
--socket,socket,文件位置
--debug-info,打印内存和CPU的信息
--only-print,只打印测试语句而不实际执行
--auto-generate-sql,自动产生测试SQL
--auto-generate-sql-load-type,测试SQL的类型。类型有mixed,update,write,key,read。
--number-of-queries,执行的SQL总数量
–number-int-cols,表内int列的数量
--number-char-cols,表内char列的数量
--query=name,使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。
mysqlslap -a -concurrency=50 --number-of-queries 300 -T -hlocalhost -uroot -p123
此处表示自动测试,mysql将自动创建数据库,自动insert以及读取,给出最终的查询结果,其查询结果可能如下:
Benchmark
        Running for engine myisam
        Average number of seconds to run all queries: 0.087 seconds
        Minimum number of seconds to run all queries: 0.087 seconds
        Maximum number of seconds to run all queries: 0.087 seconds
        Number of clients running queries: 200
        Average number of queries per client: 1
你也可以指定自己的SQL语句,使用很简单,这里就不举例了。注意下--(两个下划线)和-(一个下划线)这样的参数形式就可以了。例子以及展示了其用法。

转:用php说明char和varchar区别

大家在建表时可能经常会遇到类似char和varchar这类的字段类型选择。

如有以下数据结构:

工号 姓名 部门
———————–
1 张三 财务
2 李四 人事
3 王五 销售
……..

我们定义”姓名”为char(10)(静态)的时简单地用php代码表示:
简单地模拟底层数据存储链表$data
$col_num_len  =1;      //工号长度为1
$col_name_len=10;    //姓名长度为10
$col_unit_len   =4;     //部门长度为4
$col_len=$col_num_len+$col_name_len+$col_unit_len+3;         //表示每笔记录的总长度,包括3个分隔符
实现如下:
$data="1|张三      |财务|2|李四      |人事|3|王五      |销售|...";         //简单地模拟底层数据存储链表

阅读剩余部分...

php开发指南第20章节选之mysql里的序列应用详解

提到mysql,我顺便讲讲序列。用过oracle的人都知道,orale没有类似mysql的AUTO_INCREMENT这样的自增长字段,实现插入一条记录,自动增加1.oracle是通过sequence(序列)来完成的。这样看起来,似乎mysql的自增长要比oracle序列的实现更好更方便。那我为什么还要提序列呢?有必要吗?
(1)首先mysql的自增长“序列”和序列是两回事,mysql本身不提供序列机制。

(2)mysql的AUTO_INCREMENT可以设置起始值,但是不能设置步长,其步长默认就是1.(这里是错误的,可以通过修改系统变量设置步长,但其针对全局)

(3)mysql一个表只能有一个自增长字段。自增长只能被分配给固定表的固定的某一字段,不能被多个表共用。并且只能是数字型。

(4)在历史表和数据迁移时,经常会遇到自增主键重复的问题。

(5)自增主键往往是没意义的。
在下列情况下可能你需要使用序列:
1)业务复杂,你需要高度定制和控制主键(自增主键只能是按数字递增的,但是序列可以随心所欲的变化,比如按照年月日生成主键。。。)
(2)你希望手工维护自增长,方便数据迁移;
(3)当事务跨多表时,期望事务可靠性;

(4)当你需要一个业务上有意义的主键时,比如单据号等(若你需要的只是一个流水号,那么用自增更方便);

(5)当你的主键很明确地需要和其他表关联时(若你的表不与其他表关联时,如日志表,自增更方便)

(6)你期望这个主键是唯一的,不需要重复利用的。
    当然,序列也有缺点,主要就是程序处理麻烦,不如自增方便。oracle的自增有缓存,不用担心效率问题,而mysql只能通过触发器模拟,可能会有性能损失。

阅读剩余部分...

    Page :
  1. 1