How should I select a primary key in my use case
Since a device can have more than one IMEI number, that is obviously not the primary key of the devices. Is there no existing attribute, such as serial number, that can serve as unique identifier? If not, then you probably need a devices master table with one entry per device and a generated ID for the primary key. This value would then be used in the transaction table along with the IMEI number. Something like
Table: Device
   DeviceID  int serial primary key

Table: DeviceIMEI
   DeviceID  int FK references Device.DeviceID
   IMEI      character(16)  primary key,
   Status    Boolean

The IMEI is defined as globally unique so can be the PK of DeviceIMEI, even though it may not be the only IMEI for its DeviceID.
One million transactions over 5 hours is about 55 per second. A modern relational DBMS can handle that.