mysql 数据处理(杂谈)
来源:互联网 发布:java反转单链表递归 编辑:程序博客网 时间:2024/05/17 22:31
1.mysql数据
+数据思考
数据:状态 类型 格式
验证:参数 返回 缓存
存取:事务 索引 队列
/*model
* 属性:
* const 数据状态
* public 变量声明
*
* 方法:
* 1.set/get
*
* 2.curd:
* 参数验证
* 缓存验证
* delete update insert 事务 or队列
* 返回验证(返回...
+数据类型
//data type
$str = "10";
$num = (int)$str;
if ($str === 10) echo "String";
if ($num === 10) echo "Integer";//right
//diff : intval or int
//intval
intval("A"); //0;
intval(12.3223); //12;
intval("1123Asdfka3243"); //1123;
//int()
$a=0.13;
$b=(int)$a; //$b=0;
$a=0.99;
$b=(int)$a; //$b=0;
$a=1.01;
$b=(int)$a; //$b=1;
$a=1.99;
$b=(int)$a; //$b=1;
$str = 'test10';
echo (int)$str; //0
echo intval($str); //0
/*
“10” - > 10
“10.5” - > 10
“10,5” - > 10
“10” - > 10
“10” - > 10
“10test” - > 10
“test10” - > 0
*/
?>
+事务处理,自动提交关闭后,虽说没执行回滚了,但是自增ID是跳过的了,
$conn = mysql_connect('localhost','root','root') or die ("数据连接错误!!!");mysql_select_db('test',$conn);
$time = date('Y-m-d H:i:s',time());
//mysql_query("SET AUTOCOMMIT=0");
$sql = "INSERT INTO `test`.`test`
(`id`,
`name`,
`create_time`)
VALUES (null,
'123',
'{$time}');";
$res = mysql_query($sql);
if(1){
mysql_query("ROLLBACK");
echo '提交成功。';
}
//OR
if(1>0){
mysql_query("COMMIT");
echo '提交成功。';
}
mysql_query("END"); //事务处理完时别忘记mysql_query("SET AUTOCOMMIT=1");自动提交
2.json or serialize
error_reporting(0);
//$user = 'user';
//echo serialize($user);
echo serialize(null).PHP_EOL; //N;
echo serialize(''); // s:0:"";
echo serialize(array('key'=>'val'));//a:1:{s:3:"key";s:3:"val";}
echo serialize(array('keys'=>array(0,1,2)));//a:1:{s:4:"keys";a:3:{i:0;i:0;i:1;i:1;i:2;i:2;}}
echo serialize($user = 'user');//s:4:"user";
echo serialize($users);//N;
echo serialize(1.234);//d:1.234;
echo serialize(12);//i:12;
echo serialize(true);//b:1;
echo serialize(false);//b:0;
echo '===================================<br>';
echo json_encode(null).PHP_EOL; //null
echo json_encode(''); //"";
echo json_encode(array('key'=>'val'));//{"key":"val"}
echo json_encode(array('keys'=>array(0,1,2)));//{"keys":[0,1,2]}
echo json_encode($user = 'user');//"user";
echo json_encode($users);//null;
echo json_encode(1.234);//1.234;
echo json_encode(12);//12;
echo json_encode(true);//true;
echo json_encode(false);//false;
echo json_encode(array('keys'=>array(0,1,2),'key2'=>array('d','w','o')));//{"keys":[0,1,2],"key2":["d","w","o"]}
/*
json fast==> simple([] : {} ,) list(有序)
json 比 serialize快了一个级别
json_encode :0.90479207038879
json_decode :1.753741979599
serialize :1.3566699028015
unserialize :1.3003630638123
//
数据分类:
第一种类型是标量(scalar),也就是一个单独的字符串(string)或数字(numbers),比如"北京"这个单独的词。
第二种类型是序列(sequence),又叫做数组(array)或列表(List),比如"北京,上海"。
第三种类型是映射(mapping),也就是一个名/值对(Name/value),
serialize有更加详细的类型区分,而json只有四种类型,
1) 并列的数据之间用逗号(", ")分隔。
2) 映射用冒号(": ")表示。
3) 并列数据的集合(数组)用方括号("[]")表示。
4) 映射的集合(对象)用大括号("{}")表示。
数组表示有序数据的集合,而对象表示无序数据的集合,数组的数据没有名称,对象的数据有名称
json无法处理对象方法等数据。目前JSON只支持UTF-8编码的数据。
+session
//$user = 'user';
//echo serialize($user);
error_reporting(0);
$session_file = 'ok|s:2:"kk";ok22|s:3:"kkk";'; // key | unserialize($val)
$arr = explode(';', trim($session_file,';'));
echo '<pre>';
$realKey = array();
$realVal = array();
foreach($arr as $k=>$v){
$realArr = explode('|', $v);
foreach($realArr as $key=>$val){
if ($key==0){
array_push($realKey, $val);
}else{
array_push($realVal,unserialize(trim($val)));
}
}
$merge = array_combine($realKey, $realVal);
}
print_R($merge);
3.缓存
+redis:bgrewriteaof 快照 主从 单点等问题的方法:
1.Master最好不要做任何持久化工作,包括内存快照和AOF日志文件,特别是不要启用内存快照做持久化。
2.如果数据比较关键,某个Slave开启AOF备份数据,策略为每秒同步一次。
3.为了主从复制的速度和连接的稳定性,Slave和Master最好在同一个局域网内。
4.尽量避免在压力较大的主库上增加从库
5.为了Master的稳定性,主从复制不要用图状结构,用单向链表结构更稳定,即主从关系为:Master<--Slave1<--Slave2<--Slave3.......,这样的结构也方便解决单点故障问题,实现Slave对Master的替换,也即,如果Master挂了,可以立马启用Slave1做Master,其他不变。
+memcache 高级
/*
getExtendedStats($key)
getExtendedStats('cachedump','$key->key',0)
*/
$memcache = memcache_connect('127.0.0.1', 11211);
$memcache->set('items',1,0,3600);
$ar = array();
echo '<pre>';
$items = $memcache->getExtendedStats('items');
$items = $items["127.0.0.1:11211"]['items'];
foreach ($items as $key=>$values){
$number=$key;
$str = $memcache->getExtendedStats('cachedump',$number,0);
$line=$str["127.0.0.1:11211"];
var_dump($line);
if (is_array($line)&&count($line)>0){
foreach ($line as $key=>$value){
if(substr($key,0,2)=='it'){
$ar[] = $memcache->get($key);
}
}
}
}
print_r($ar);
/*
stats 功能:
检查Memcache服务器状态:
stats\r\n
在这里可以看到memcache的获取次数,当前连接数,写入次数,已经命中率等;
pid : 进程id
uptime :总的运行时间,秒数
time : 当前时间
version : 版本号
……
curr_items : 当前缓存中的KeyValue数量
total_items : 曾经总共经过缓存的KeyValue数量
bytes : 所有的缓存使用的内存量
curr_connections 当前连接数
….
cmd_get : 总获取次数
cmd_set : 总的写入次数
get_hits : 总的命中次数
miss_hits : 获取失败次数
…..
bytes_read : 总共读取的流量字节数
bytes_written : 总的写入流量字节
limit_maxbytes : 最大允许使用的内存量,字节
7、高级缓存细节查看方法:
stats reset
清空统计数据
stats malloc
显示内存分配数据
stats cachedump slab_id limit_num
显示某个slab中的前limit_num个key列表,显示格式如下
ITEM key_name [ value_length b; expire_time|access_time s]
其中,memcached 1.2.2及以前版本显示的是 访问时间(timestamp)
1.2.4以上版本,包括1.2.4显示 过期时间(timestamp)
如果是永不过期的key,expire_time会显示为服务器启动的时间
stats cachedump 7 2
ITEM copy_test1 [250 b; 1207795754 s]
ITEM copy_test [248 b; 1207793649 s]
stats slabs
显示各个slab的信息,包括chunk的大小、数目、使用情况等
stats items
显示各个slab中item的数目和最老item的年龄(最后一次访问距离现在的秒数)
stats detail [on|off|dump]
设置或者显示详细操作记录
参数为on,打开详细操作记录
参数为off,关闭详细操作记录
参数为dump,显示详细操作记录(每一个键值get、set、hit、del的次数)
install + pluign + use
+baidu api
//http://developer.baidu.com/console#app/6583653
//http://developer.baidu.com/map/index.php?title=webapi/guide/webservice-geocoding
- mysql 数据处理(杂谈)
- 关于数据处理的杂谈
- mysql 杂谈
- Mysql杂谈
- mysql 数据处理
- 数据处理-----MySql
- mysql数据处理
- mysql数据处理
- mysql 数据处理
- mysql建索引杂谈
- (杂谈),
- 技术杂谈(2)——centos7安装mysql
- MySQL数据处理函数
- MySQL数据库大数据处理
- mysql 大量数据处理问题
- MySQL 数据处理备忘
- php mysql大数据处理
- 【数据库-MySql】重复数据处理
- Node.js开发入门——MongoDB与Mongoose
- 文本框禁用输入法
- 多模卫星导航接收机
- [MFC] 控件大小跟随对话框大小比例变化 [大三TJB_708]
- jjtjfruk
- mysql 数据处理(杂谈)
- 多线程下载原理
- BZOJ 1604 [Usaco2008 Open]Cow Neighborhoods 奶牛的邻居 Treap
- 一位初入门的新员工的代码分析(1)
- python pandas 用法
- POJ2352(Treap || 线段树)
- linux start+log+bak
- 六大设计原则--接口隔离原则【 Interface Segregation Principle】
- 函数参数传递方式