MySQL数据库InnoDB和MyISAM数据引擎的差别

InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。

MyIASM是IASM表的新版本,有如下扩展:
二进制层次的可移植性。
NULL列索引。
对变长行比ISAM表有更少的碎片。
支持大文件。
更好的索引压缩。
更好的键吗统计分布。
更好和更快的auto_increment处理。

以下是一些细节和具体实现的差别:

1.InnoDB不支持FULLTEXT类型的索引。
2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。
3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。

另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”

任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势。

改造锂电冲电器

现在冲电器的设计。。。。。。

单LED双色,红的是冲电中,绿的是冲满了。

问题是分不清颜色的人怎么办?

开始的想法是加个蜂鸣器,冲好了就响,不过原来LED的电驱动力太小了

蜂鸣器不响,如果从冲电的部分取电,由于是智通冲,就会影响冲电了。

也可以从220v取电,用4个in4004组成个全整流桥,变成220v直流

连蜂鸣器(3v阻抗16殴),220*16/3=1173.3串一个1200殴的电阻。

理论上就可以让蜂鸣器正常工作了。不过我觉得麻烦。把共阴极的双色LED

改成了两个LED了。在外壳上打了个孔。方的是原来的,绿色草帽LED是我加的

见下图:

IMG_20130819_223351 IMG_20130819_215006 IMG_20130819_215001 IMG_20130819_215014 IMG_20130819_222814

 

最后再说一下,关于封条的问题,封条的胶在60度左右会软化。

用吹风机或热风枪100度吹,把握好尺度。用裁纸刀可以把封条起下来:)

改造鼠标2节七号电池,改可充电锂电

原来买的雷柏的套装,鼠标太费电了。没钱买电池呀!!!!

手来用7号充电电池,也是没几天就要冲太麻烦。

后来有个想法,就是用闲置的手机电池来给鼠标用。

当时分析了一下电压,和理论的上最简单的解决方案。

见:http://www.kumouse.com/?p=869

今天实践了一下。

发现之前理论上有点问题。第一就是in4004二级管的压降只有0.5v左右

只用2个,电压为3.5。明显高于额定电压,所以我用了3个in4004串连。

打开鼠标测试,电压为2.5v,很理想。当锂电10%电量时,为3.75v.

串上3个二级管后电压为2.25,也是很理想的。

然后加上了网上买的锂电充电模块。可以冲电了。给鼠标后边打了个孔,不是太好看

OK

改造见下图:

IMG_20130819_205932 IMG_20130819_205938 IMG_20130819_205947 IMG_20130819_214017 IMG_20130819_214040

锂电,电量与电压对应该关系

锂离子电池开路电压与电池容量的对应关系分析

OCV电压对容量关系 550mA恒流放电电压对容量关系
  100%—-4.20V 100%—-4.20V
  90%—–4.06V 90%—–3.97V
  80%—–3.98V 80%—–3.87V
  70%—–3.92V 70%—–3.79V
  60%—–3.87V 60%—–3.73V
  50%—–3.82V 50%—–3.68V
  40%—–3.79V 40%—–3.65V
  30%—–3.77V 30%—–3.62V
  20%—–3.74V 20%—–3.58V
  10%—–3.68V 10%—–3.51V
  5%——3.45V 5%——3.42V
  0%——3.00V 0%——3.00V
  因为电池电压的影响因素实在太多,表中的仅供各位参考.
有套雷柏的无线键鼠,两节7号电池,太费电了,用不了几天就要充电,于要我要用锂电来代替。
找了一些稳压电路,不过还是觉得麻烦。最后决定用两个二级管来降压,1个PN节压降是0.6v硅管
两个串起来。4.2-1.2=3,3.5-1.2=2.3还有10%电压时,仍然可以工作,效果达到了,又极简单。
哈哈。OK了。

openwrt 挂载摄像头 mjpg-streamer 相关

AMCap

kmod-i2c-core、
kmod-usb-video、
kmod-video-gspca-core、
kmod-video-gspca-zc3xx;
kmod-video-pwc

build_dir/target-mips_r2_uClibc-0.9.33.2/mjpg-streamer-r148/ipkg-ar71xx/mjpg-streamer/etc/config/mjpg-streamer

====================================
config mjpg-streamer core
option enabled “1”
option device “/dev/video0”
option resolution “640×480”
option fps “30”
option www “/www/webcam”
option port “8080”

======================================
加密码
vi /etc/init.d/mjpg-streamer

service_start /usr/bin/mjpg_streamer –input “input_uvc.so \
–device $device –fps $fps –resolution $resolution” \
–output “output_http.so –www $www –port $port”

改成
service_start /usr/bin/mjpg_streamer –input “input_uvc.so \
–device $device –fps $fps –resolution $resolution” \
–output “output_http.so –www $www -c test:123 –port $port”

用户名为test
密码为123
=======================================
存图,不能有密码

wget http://localhost:8081/?action=snapshot -O /tmp/s.jpg

mjpg_streamer –input “input_uvc.so –device /dev/video0 -r 6
40×480 -f 30” -o “output_file.so -f /tmp/”
=======================================

mjpg_streamer -i “input_uvc.so -r 640×480 -f 30” -o “output_http.so -p 8080 -w /www”
UVC需安装的软件
opkg install kmod-video-core kmod-video-uvc
启动命令
mjpg_streamer -i “input_uvc.so -r 352×288 -y -f 15 -q 80” -o “output_http.so -p 8080 -w /www”
把option enabled “0” 改成1

openwrt 给没有usb的机子加入usb支持

#./target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr741nd.c

build_dir/linux-ar71xx_generic/linux-3.3.8/arch/mips/ath79/mach-tl-wr741nd.c
开头加入
#include “dev-usb.h”
找到函数
static void __init tl_wr741nd_setup(void)
里边加入
/* USB */
ath79_register_usb();

================================
build_dir/linux-ar71xx_generic/linux-3.3.8/arch/mips/ath79/Kconfig

config ATH79_MACH_TL_WR741ND
bool “TP-LINK TL-WR741ND support”
select SOC_AR724X
select ATH79_DEV_AP9X_PCI if PCI
select ATH79_DEV_ETH
select ATH79_DEV_GPIO_BUTTONS
select ATH79_DEV_LEDS_GPIO
select ATH79_DEV_M25P80
select ATH79_DEV_USB

加入了这个”select ATH79_DEV_USB”

===================================
Compile it for the first time, with the modules/settings you want.
For mounting USB drives, select kernel kmod modules:
USB support: usb2, ohci, storage
Filesystems: ext4, ntfs, vfat
Native language support: cp437,cp852,iso-8859-1, utf8.

If you want R/W NTFS support, select:
Utilities/filesystems/ntfs-3g

Then go to build_dir/linux-ar71xx_generic/linux-3.3.8/arch/mips/ath79
Edit this files:

mach-tl-wr741nd-v4.c
add #include “dev-usb.h” at the top of the file
add ath79_register_usb(); before ath79_register_m25p80(&tl_wr741ndv4_flash_data)

Kconfig
add select ATH79_DEV_USB under “config ATH79_MACH_TL_WR741ND_V4”

Now, run make again. Now the USB will work.

openwrt 挂载 usb 设备所需要的包

opkg install kmod-usb-core
opkg install kmod-usb-ohci #安装usb ohci控制器驱动
#opkg install kmod-usb-uhci  #UHCI USB控制器
opkg install kmod-usb2 #安装usb2.0
opkg install kmod-usb-storage #安装usb存储设备驱动
opkg install usbutils #安装了这个后可以用 lsusb
opkg install kmod-fs-ext2 #安装ext2分区支持
opkg install kmod-fs-ext3 #安装ext3分区格式支持组件
opkg install kmod-fs-ntfs #ntfs内核驱动
opkg install mount.ntfs-3g #挂载ntfs助手
opkg install mount-utils #挂载卸载工具
opkg install ntfs-3g #挂载NTFS
opkg install kmod-fs-vfat #挂载FAT
opkg install fdisk #硬盘分区管理工具

编译openwrt 12.09 r36088 遇到的问题

1. 报错configure: error: no acceptable Java compiler found in $PATH

系统里没有java的编译器。yum install sdk*

2. make[7]: Entering directory `/home/ssj/attitude_adjustment/build_dir/host/otp_src_R15B01/lib/inets/src’

这个倒是没报错,不过比报错更坑人。我等了几个小时,发现还是不动。

于是到`/home/ssj/attitude_adjustment/build_dir/host/otp_src_R15B01/lib/inets/src’

make 了一下,发现报错ccache :未找到。你妹呀,浪费了几个小时

find /home/ssj/attitude_adjustment -name ccache

发现ccache交插编译环境中已经编译好了。于是修改了一下/etc/bashrc

最后加入了export PATH=$PATH:/home/ssj/attitude_adjustment/staging_dir/host/bin/

然后再重连一下ssh,可以找到ccache了,再编译,可以了,不会卡住不动了

编译个固件 真悲崔

 编译个固件真难,vmware开了8线程,用的是32系统,给分了3G内存,一会儿就内核报错看了看情况,发现内存全用了,swap 2G也全用了,内核等待超时,晕菜了
换了个pae的内核,给了8G内存,2G交换,开8线程再试试

[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 8114 79 8034 0 8 40
-/+ buffers/cache: 31 8083
Swap: 2047 0 2047

恩,还行,用了6G内存,还顶的住

total used free shared buffers cached
Mem: 8114 6269 1845 0 42 197
-/+ buffers/cache: 6029 2084
Swap: 2047 0 2047

i7 2600K 100%占用率